我是靠谱客的博主 秀丽豌豆,最近开发中收集的这篇文章主要介绍使用typedef语句定义数组类型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用typedef语句定义数组类型


   1. 一维数组类型的定义格式


       typedef <元素类型关键字><数组类型名>[<常量表达式>];


   例如:


   (1) typedef int vector[10];


   (2) typedef char strings[80];


   (3) typedef short int array[N];


   第一条语句定义了一个元素类型为int,含有10个元素的数组类型vector,若不使用typedef保留字,则就变成了数组定义,它只定义了一个元素类型为int、含有10个元素的数组vector。这两种定义有着本质的区别,若定义的是数组vector,系统将为它分配有保存10个整数的存储单元,共40个字节的存储空间;若定义的是数组类型vector,系统只是把该类型的有关信息登记下来,待以后利用该类型定义对象时使用,具体地说,就是把vector的元素类型int,类型长度10,类型名vectoe等登记下来,待以后定义vector类型的对象时使用。


   第二条语句定义了一个元素类型为char,含有80个元素的数组类型strings,以后可以直接使用strings类型定义数组对象,每个数组对象的元素为char型,数组长度(即元素个数)为80。


   第三条语句定义了一个元素类型为short int的含有N个元素(N为已定义的符号常量)的数组类型array,以后利用它可以直接定义该类型的对象,它是一个含有N个短整型元素的数组。


   下面是利用上述类型定义对象的一些例子。


   (1) vector v1,v2;


   (2) strings s1,s2="define type";


   (3) array a={25,36,19,48,44,50};  //假定常量N≥6


   第一条语句定义了vector类型的两个对象v1和v2,每个对象都是vector类型的一个数组,每个数组由10个整型元素所组成。


   第二条语句定义了strings类型的三个对象s1,s2和s3,并且对s3进行了初始化,每个对象都是含有80个字符空间的数组。


   第三条语句定义了一个array类型的对象a,它是一个含有N个短整型元素的数组,该语句同时对数组a进行了初始化,使得a[0]~a[5]的元素值依次为25,36,19,48,44和50。


   2. 二维数组类型的定义格式


       typedef <元素类型关键字><数组类型名>[<常量表达式1>][<常量表达式2>];


   例如:


   (1) typedef int matrix[5][5];


   (2) typedef char nameTable[10][NN];


   (3) typedef double DD[M+1][N+1];


   第一条语句定义了含有5行5列共25个int型元素的数组类型matrix,第二条语句定义了10行NN列共10*NN个char型元素的数组类型nameTable,第三条语句定义了含有M+1行N+1列共(M+1)*(N+1)个double类型元素的数组类型DD。


   利用这三个二维数组类型可以直接定义出相应的二维数组。如:


   (1) matrix mx=`0`;


   (2) nameTable nt={""};  //或使用等同的{{''}}初始化


   (3) DD dd=`0`.`0`;


   第一条语句定义了二维整型数组类型matrix的一个对象mx,该对象是一个5*5的二维整型数组,每个元素均被初始化为0;第二条语句定义了二维字符数组类型nameTable 的一个二维字符数组nt,该数组中的每个元素均被初始化为空字符;第三条语句定义了二维双精度数组类型DD的一个数组dd,它的每个元素均被初始化为0.0。


   在typedef语句中,<元素类型关键字>可以是C++语言中预定义的任何一种数据类型,也可以是用户在前面已定义的任何一种数据类型,所以通过该语句定义的类型同样可以用在其后的typedef语句中。如:


   (1) typedef vector vectorSet[20];


   (2) vectorSet vs;


   第一条语句定义了元素类型为vector,元素个数为20的一个数组类型vectorSet,第二条语句定义了数据类型为vectorSet的一个对象vs,该对象包含有20个类型为vector的元素,每个元素又包含有10个int类型的元素,所以整个数组共包含有20行10列共200个整数元素,它等同于对vs的如下定义:


       int vs[20][10];


   利用typedef语句同样可以定义更高维的数组类型,这里就不进行讨论了。


   3. 对已有类型定义别名


   利用typedef语句不仅能够定义数组类型,而且能够对已有类型定义出另一个类型名,以此作为原类型的一个别名。如:


   (1) typedef int inData;


   (2) typedef char chData;


   (3) typedef char* chPointer;


   第一条语句对int类型定义了一个别名inData,第二条语句对char类型定义了一个别名chData,第三条语句对char*类型(它是字符指针类型)定义了一个别名chPointer。以后使用inData,chData和chPointer就如同分别使用int,char和char*一样,定义出相应的对象。如:


   (1) inData x,y;


   (2) inData a[5]={1,2,3,4,5};


   (3) chData b1,b2='a';


   (4) chData c[10]="char data";


   (5) chPointer p=0;


   第一条语句定义了inData(即int)型的两个变量x和y,第二条语句定义了元素类型为int的一维数组a[5]并进行了初始化,第三条语句定义了chData(即char)型的两个变量b1和b2,并把b2初始化为’a’, 第四条语句定义了一个字符数组c[10]并初始化为”char data”, 第五条语句定义了一个字符指针变量p,并初始化为0(即NULL)。


转载于:https://blog.51cto.com/7139099/1385545

最后

以上就是秀丽豌豆为你收集整理的使用typedef语句定义数组类型的全部内容,希望文章能够帮你解决使用typedef语句定义数组类型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部