typedef struct { int num; char sz[0]; }num; main() { char sz[20]="your_name"; num n1; printf("%s",n1.sz); } 此函数会打印出your_name,很奇怪为什么,,这得说编译了, 编译的时候,sz先压栈,n1紧跟着压栈,,这两个变量在所分配的栈空间中是紧挨着的,sz在高地址,接下来就是n1,因为这两个变量是局部变量,使用栈空间。所以n1.sz 的地址实际上就是sz所表示的地址 不过这依赖于具体的编译实现
char sz[0] 理解
最新推荐文章于 2022-04-16 20:05:50 发布