typedef int a[10];怎么解释?

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];自然是不能通过编译的。。

原文地址:https://www.cnblogs.com/haxianhe/p/9271190.html