typedef 神马
- C/C++ code
int ia[3][4];typedef int int_array[4]; //int_array[4]表示int类型int_array *ip=ia; //为什么int_array表示含有4个整型数的类型???int (*ip1)[4]=ia; //这个是可以的
如代码注释的疑问,求大神解答???
? 首先表示感谢。。。
[解决办法]
- C/C++ code
#include <stdio.h>main(){ int ia[3][4]; typedef int int_array[4]; //int_array表示int[4]类型,也就是含有4个元素的整型数组 int_array *ip=ia; //ip是指向int[4]类型的指针 int (*ip1)[4]=ia; //ip1也是 printf("int_array:%d\n",sizeof(int_array)); printf("ip:%d\n",sizeof(*ip)); printf("ip1:%d\n",sizeof(*ip1));}
[解决办法]
第一句表示int_array数组的第一个元素都成为int的别名,也就是说int_array就是相当于&(int) ,int_array的范围是四个int空间的大小.当然楼主提到为什么int_array为什么会都是四个int型,这肯定是语法的要求了!不过我们第一眼看猜也猜得出来表示什么意思,它不可能表示int_array数组的第四个元素是int的别名,而其它的不是吧?如果这样的话,那int_array该被数组除名了!!!明显是自相矛盾的.所以只有表示四个元素都是int有别名啦,呵呵...
第二句也就是&(int)* ip=a;即int** ip=a; 这样ip不就是表示一个二维整形数据的首地址.
第三句与第二句等效.
[解决办法]