结构体分析

liangbina07 2013-05-04 12:23:00
typedef struct _T{
int nType;
int p[0];
};

sizeof(T) = ???;
上面结构的用法师合法的,就上面的这样设计有什么意义?
...全文
212 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
就是那个党伟 2013-05-06
  • 打赏
  • 举报
回复
楼主这么个struct好诡异的说
liangbina07 2013-05-05
  • 打赏
  • 举报
回复
懂了,谢谢上面各位兄弟的解答!
漫步者、 2013-05-04
  • 打赏
  • 举报
回复
你的数组大小不能为0吧,抛开这个语法,在设计上m没有什么不妥当的,我经常这么干
愤怒的翅膀 2013-05-04
  • 打赏
  • 举报
回复
数组都能为0,,好吧,那就4byte了
秃头披风侠 2013-05-04
  • 打赏
  • 举报
回复
结构的大小是一个int,最后的数组大小为0,因此应该不占空间。 楼主的这种写法是柔性数组,最后一个数组可以用来进行结构的扩充... 楼主可以搜索下柔性数组,资料还是蛮多的。
hugett 2013-05-04
  • 打赏
  • 举报
回复
在标准 C 或者 C++ 中由于不支持 0 长度的数组,所以 int array[0]; 这样的定义是非法的。不过有些编译器的扩展功能支持 0 长度的数组。 在 C 中,0 长度的数组的主要用途是用来作为结构体的最后一个成员,然后用它来访问此结构体对象之后的一段内存(通常是动态分配的内存)。由于其非标准性,在程序中尽量避免使用 0 长度的数组。作为替换,可以使用 C99 标准中的不完整数组来替换 0 长度的数组定义。 具体可以看一下:http://blog.csdn.net/zhaqiwen/article/details/7904515
ri_aje 2013-05-04
  • 打赏
  • 举报
回复
数组大小必须大于零。

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧