Mi Ke??????? 2022-04-07 17:19 采纳率: 66.7%
浏览 706
已结题

C语言数组[ ]里可以放变量?

定义数组的时候[ ]里必须是一个常量表达式,例如a[20]是合法的,像下面这样的代码是不合法的
#include<stdio.h>
int main()
{
int n=10,i;
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
return 0;
}
但是,这段代码在我电脑上没报错?

  • 写回答

5条回答 默认 最新

  • 菠萝.吹.雪 2022-04-07 18:17
    关注

    在C99标准之后的数组中[ ]的值是支持变量的。
    你的编译器执行的应该是C99或者C99之后的标准。
    但是一般来说C语言数组[ ]里不可以放变量,因为他们是使用C99之前的标准

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 离陌lm 2022-04-07 17:22
    关注

    因为这里你给n赋值了,就相当于是一个确定的数了

    评论
  • 不会长胖的斜杠 后端领域新星创作者 2022-04-07 17:22
    关注

    可以理解为这并不是变量,未初始化的数组并不代表是变量

    评论
  • 一只蚂蝼 2022-04-07 17:25
    关注

    应该是编译器优化了,这里编译的时候就取的是10的长度

    评论
  • 偷窃月亮的贼 2022-04-07 17:52
    关注

    你用的什么编译器?

    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月23日
  • 已采纳回答 4月15日
  • 创建了问题 4月7日

悬赏问题

  • ¥30 电脑画面同步投屏,通过同wifi的方式投屏方法,接收投屏端不需要安装第三方软件,
  • ¥15 有偿拼接大疆精灵4RGB影像
  • ¥15 Arduino实现音频混响
  • ¥15 cuda.jit加速报错
  • ¥15 Octave 安装工具箱出错 Only Win32 target is supported!
  • ¥15 docker save的不能在另一台设备运行
  • ¥15 Unity Animation Rigging使用问题
  • ¥15 mbedtls握手返回-7200
  • ¥30 c++ http服务器
  • ¥15 express连接mssql,每条额外附加了语句