定义数组类型
int arrayaa[10];
这个表示我定义了一个int型数组,数组名字叫arrayaa,这个数组里面有10个int型数据。
那如果前面加上一个typedef,那么意思就完全变了
typedef int arrayaa[10];
表示定义了一个名字叫 arrayaa的数组类型,这个数组类型的元素类型为int,且含有10个int型数据(元素)。
同样的道理,我也可以定义一个char类型,一个double类型等等,
我可以利用这个数组类型,去定义新的数组
举个例子
int main(void) { typedef int arrayaa[10]; arrayaa a1; for (int i = 0; i < 10; i++) { a1[i] = i+1; } cout<<a1[4]<<endl; }
我定义了一个数组类型,名字叫arrayaa,然后利用这个数组类型定义了一个数组,名叫a1
接下来对a1进行了赋值操作,然后打印a1里面的第五个数,输出为5.
然后看一下如何定义二维数组
和一维数组的结构是类似的
int arrayaa[10][10];
这样就定义了一个10行10列 由100个int型元素组成的二维数组的数组类型 arrayaa
接下来我们看下面的例子:定义指针数组类型
typedef int (*arrayaa)[10];
定义了一个数组类型的指针
然后我们使用一下这个指针
int main(void) { int a2[10]; typedef int (*arrayaa)[10]; arrayaa aa; aa=&a2; a2[1] = 10; cout<<a2[1]<<endl; }
逐一的看一下这个代码
首先定义两个一个数组 a2,然后定义了一个和刚才数组同类型的数组类型指针 arrayaa ,用 arrayaa定义了一个变量 aa,然后将aa指向刚才定义个数组a2,并通过aa 给数组赋值打印等操作
我们也可以这样做
int main(void) { int a2[10]; int (*arrayaa)[10]; arrayaa=&a2; a2[1] = 10; cout<<a2[1]<<endl; }
跟刚才的代码相比,这次的就是直接定义了一个(元素类型为int 元素个数为10的数组的)指针,(而上面的例子是先定义了指针类型),将指针指向前面的a2.