可以用变量定义数组长度吗?

Quester-King 2012-06-17 03:52:05
我刚学C语言,看谭浩强的《C程序设计》,上面写:

不能在方括号中用变量来表示元素的个数,下述说明方式是错误的。
 main()
{
int n=5;
int a[n];
……
}

真的是错误的吗?为什么能够运行?我写的程序很正常,能够获得期望的输出0 1 2,没有报错啊:

#include <stdio.h>

int main(){
int a = 3;
int b[a];
int i ;
for( i = 0;i < a;i++){
b[i] = i;
printf("%d\n",b[i]);
}
getch();
return 0;

}

...全文
1253 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Quester-King 2012-06-17
  • 打赏
  • 举报
回复
谢谢!
wwwzkl 2012-06-17
  • 打赏
  • 举报
回复
同意爱的战士的说法。
mymtom 2012-06-17
  • 打赏
  • 举报
回复
C89 C99
Quester-King 2012-06-17
  • 打赏
  • 举报
回复
非常不解
tongzhipeng5699 2012-06-17
  • 打赏
  • 举报
回复
c89标准不支持变长数组,单色gcc的编译器因为有GNU C扩展,即使你用gcc -std=c89 test.c 来实验也看不到效果,照样编译通过。我在网上查到用gcc -pedantic test.c 可以看到效果,已经验证。
这篇文章说的很细,有兴趣可以看下,当然我觉得其实没必要深究,了解一下就行了
http://www.cppblog.com/Walker/articles/80805.html
qq120848369 2012-06-17
  • 打赏
  • 举报
回复
请使用C89标准对待C语言。
zongshouxin 2012-06-17
  • 打赏
  • 举报
回复
不能这个样子吧,int a[];变量是在编译的时候分配的内存空间,使用变量编译器就不知道分配多少空间了。
矫情狗_____ 2012-06-17
  • 打赏
  • 举报
回复
完全可以...

69,369

社区成员

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

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