可以在n是变量的情况下定义数组a[n]吗?

cwh_live_again 2020-08-22 05:56:01
void CountOff( int n, int m, int out[] )
{
int i,j=1,k=n;
int a[n];

out[MAXN]={0};

for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{

}

}


};
整形变量n是向自定义函数CountOff传入的第一个参数,在函数内部定义数组a时,定义它的长度为n,即int a[n],可以这样定义吗?
...全文
807 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
均陵鼠侠 2020-08-24
  • 打赏
  • 举报
回复
引用 4 楼 alittlenewbiek 的回复:
你的编译器能编译通过就说明支持VLA, 或者叫VM(variably - modified)类型。 最早是由C99标准引入的, 但是C99标准的一些特性并没有被大多数编译器支持, 所以C11标准非常识相地将VLA在内的一些特性定义为可选非强制的。 一旦支持VLA,还要满足以下条件: 1,只能是定义在block或者作为函数的参数内,即automatic storage duration 2,不能初始化
说清楚,大多数编译器,是哪些编译器。
均陵鼠侠 2020-08-24
  • 打赏
  • 举报
回复
说话要负责任。 可变长度数组,是C标准支持的。
剑文文 2020-08-24
  • 打赏
  • 举报
回复
不建议使用变量为下标定义数组.虽然有些编译器支持,但这是不标准的.使用常量来定义数组.
自信男孩 2020-08-24
  • 打赏
  • 举报
回复
可变参数不可以,需要确定数组长度。因为n是局部变量,在调用之前(调用该函数)n的值是不确定的,是一个随机值。
月凉西厢 2020-08-24
  • 打赏
  • 举报
回复
目前C标准里是支持的,但对于C++,这个是非标,只是有些C++编译器支持
alittlenewbiek 2020-08-23
  • 打赏
  • 举报
回复
你的编译器能编译通过就说明支持VLA, 或者叫VM(variably - modified)类型。 最早是由C99标准引入的, 但是C99标准的一些特性并没有被大多数编译器支持, 所以C11标准非常识相地将VLA在内的一些特性定义为可选非强制的。 一旦支持VLA,还要满足以下条件: 1,只能是定义在block或者作为函数的参数内,即automatic storage duration 2,不能初始化
Minikinfish 2020-08-23
  • 打赏
  • 举报
回复
用堆,int* pa = new int[n];
flying_music 2020-08-23
  • 打赏
  • 举报
回复
如果你的编译器支持C99标准就可以
顾小白xx 2020-08-22
  • 打赏
  • 举报
回复
N必须在编译的时候确定
an_bachelor 2020-08-22
  • 打赏
  • 举报
回复
不能 int a[n];这个n必须是个常数
AceTaffy_ 2020-08-22
  • 打赏
  • 举报
回复
这是一个特性,叫VLA(variable-length array)。在C99标准,或是某些编译器的扩展下,支持这样定义数组。

70,005

社区成员

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

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