在以下两个struct定义中,它们之间有什么区别?
struct A {
int var[];
};
struct B {
int var[0];
};
struct C {
int *var;
};
我认为在使用这些结构的情况下,它们是相同的。它们背后有特殊含义吗?
A
和之间的区别B
是第二个是非法的。0
在标准C中,指定为大小的数组声明始终是无条件的非法。如果编译器接受此声明,则它是编译器的非标准扩展。
同时,中的数组声明A
是C99的一项功能,该功能在结构的末尾声明一个灵活的数组成员。
里面的声明C
是一个指针声明。A
并B
声明数组成员,C
声明指针成员。所以,那是你的不同。
PS如果您的编译器接受的定义B
,那么它的确可能与的定义相同A
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句