转自:http://hi.baidu.com/sword0228/item/f9c0089ed23653da1e42716b
typedef int int_array[4];
int ia[3][4]={1,2,3,4,5,6,7,8,9,0,11,12};
int_array *ip=ia;
int ia[3][4]={1,2,3,4,5,6,7,8,9,0,11,12};
int (*ip)[4]=ia;
上面两段效果是一样的,typedef int int_array[4];这句大体上理解。
想问下为什么不写成typedef int[4] int_array;
C++中定义数组时的格式就是[]在数组名后,但数组的类型其实是数组名前的类型和[]以及数组的大小.
int arr[10],数组的类型是int[10],但C++中书写不能写成int[10] arr;
JAVA之所以受欢迎,在这些细微地方就设计得比较人性化,它允许这个数组定义写成int[10] arr;
typedef int int_array[4];
就算你把它想成名字替换,也是用int_array替换类型int[4]
为什么不能写成typedef int[4] int_array;这只能说,因为编译器已经设计成那样了,没有对错.
你也可以呼吁下一版C++标准允许那样写.
typedef int array[8];
把int定义为array[8]
typedef 是类型重定义
typedef int array[8];
把array定义为有8个整数得数组类型
array a 就相当于int a[8]