from https://www.cnblogs.com/haxianhe/p/9271190.html
typedef int a[10];
a b[10]; 为什么分配400个字节的空间?
int a[10];为什么分配了40个字节的空间?
问题:应该怎么解释typedef的这种行为呢?而如果换成是#define a int[10];以上定义则报错?
typedef int a[10];
说明a就等同于int[10]类型。。所以
a b[10];//等同与int b[10][10];
而int a[10];这里的a代表的不是类型。。而是数组名。。
而#define只是字符替换而已。。
a b[10];//会被替换为int[10] b[10];自然是不能通过编译的。。

博客围绕C++代码展开,探讨typedef和#define的使用。分析了typedef int a[10]; a b[10];分配400字节、int a[10];分配40字节的原因,解释typedef下a等同于int[10]类型,而#define只是字符替换,使用#define a int[10];会报错。
721

被折叠的 条评论
为什么被折叠?



