int a[0]; ???

cy214 2003-07-01 05:24:12
今天看帖子 看到类似这样一个声明
int a[0];
定义了一个成员为0个的数组
我用vc6的编译器编译 不能通过
错误提示为(此一行同时引发两个错误)
error C2466: cannot allocate an array of constant size 0
error C2133: 'a' : unknown size
发贴的人说代码是linux下写的 用gcc编译
我没见过这样声明的数组 0个成员? 有没有这样声明的数组呢?这样声明的数组是做什么用的?
我现在没法试 因为vc6根本就编译不过去。。
...全文
295 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunyun820930 2003-07-01
  • 打赏
  • 举报
回复
定义
int a[0];相当于一个指针常量吧~~~~~~~~如果编译能通过~
fullsail 2003-07-01
  • 打赏
  • 举报
回复
你这样试验一下:

stuct A
{
int a;
int st [];
};
编译有告警,但可以忽视。
你估计一下它的长度。是4,还是8,答案是4。
这个冬冬经常被用来作为变长的结构。比如一个
int ddd[100];
A *pA = (A *) ddd;
使用st可以使用后面的其他数据。
howkforth 2003-07-01
  • 打赏
  • 举报
回复
我觉得c编译器不能解释这个语句,第一个错误和第二个错误其实是一个,只是c编译器再不同的操作过程中得到的不同结果。第一个错误试再检查语法时引起的,第二个试再分配内存时引起的
leasun 2003-07-01
  • 打赏
  • 举报
回复
标准C++支持0大小的数组,我记得TC++PL上提到了
fastzch 2003-07-01
  • 打赏
  • 举报
回复
楼主,这个问题提得很好,让我又学到了很多知识。
接分。
zteliubin 2003-07-01
  • 打赏
  • 举报
回复
有的编译器不支持0长度数组,如果动态就用指针。

没有必要纠缠这个问题,移植也会有问题。
xueqt 2003-07-01
  • 打赏
  • 举报
回复
AechoJohn(江江) 有见地,
Afo1st 2003-07-01
  • 打赏
  • 举报
回复
borland c同样也不行,所以肯定长度为0的数组是非法的。
cy214 2003-07-01
  • 打赏
  • 举报
回复
问题是不管它可能用来做什么 我的vc6无法编译通过
这样声明对不对?
AechoJohn 2003-07-01
  • 打赏
  • 举报
回复
它不是作数组用,而是用来作指针的。
Yssss1980 2003-07-01
  • 打赏
  • 举报
回复
定义长度为0的数组,肯定是非法的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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