首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

typedef 神马,该怎么解决

2012-04-27 
typedef 神马C/C++ codeint ia[3][4]typedef int int_array[4]//int_array[4]表示int类型int_array *ip

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不就是表示一个二维整形数据的首地址.
第三句与第二句等效.
[解决办法]
探讨
引用:
语法哪有那么多因果关系.
记住就是了


C++语法太多了,要理解基础上记忆,会好点吧。。。

热点排行