关于动态定义数组大小的问题

万猫学社
Java领域优质创作者
博客专家认证
2009-03-14 08:01:58

#include <stdio.h>
int main()
{
int n;
while(1)
{
scanf("%d",&n);
if(n==0)break;
int a[n];
printf("数组大小为%d\n",sizeof(a)/sizeof(int));
}
return 0;
}

编译环境:Dev C++ 4.9.9.0
编译通过,运行结果:
2
数组大小为2
3
数组大小为3
4
数组大小为4
5
数组大小为5

这是为什么?高手赐教!
...全文
181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
eatsweetpotato 2009-03-14
  • 打赏
  • 举报
回复
c99允许这样
scanf("%d",&n);
int a[n];
mikescofied 2009-03-14
  • 打赏
  • 举报
回复
#include <stdio.h> int main() { int n; while(1) { scanf("%d",&n); if(n==0)break; int a[n]; printf("数组大小为%d\n",sizeof(a)/sizeof(int)); } return 0; }
mikescofied 2009-03-14
  • 打赏
  • 举报
回复
你的代码在vc6.0中编译出现以下错误


E:\c练习\5555Cpp1.cpp(10) : error C2057: expected constant expression
E:\c练习\5555Cpp1.cpp(10) : error C2466: cannot allocate an array of constant size 0
E:\c练习\5555Cpp1.cpp(10) : error C2133: 'a' : unknown size
E:\c练习\5555Cpp1.cpp(11) : error C2070: illegal sizeof operand
mikescofied 2009-03-14
  • 打赏
  • 举报
回复
是不是编译器的问题,c应该是不允许动态生成数组的
万猫学社 2009-03-14
  • 打赏
  • 举报
回复
C中不允许动态定义数组的长度,我记得学的时候是这样的!
arong1234 2009-03-14
  • 打赏
  • 举报
回复
你不是就打印数组大小么?这不是正按照你要的打印么
万猫学社 2009-03-14
  • 打赏
  • 举报
回复
补充一下,保存的文件扩展名是.cpp!

69,377

社区成员

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

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