找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

number不是常数吗 为何错误

number不是常数吗 为何错误-1.png
number不是常数吗 为何错误-2.jpg
回复

使用道具 举报

大神点评(14)

umurar 2022-12-22 19:45:37 显示全部楼层
number不是常数吗 为何错误-1.png
回复 支持 反对

使用道具 举报

waaygacm97 2022-12-22 19:46:19 显示全部楼层
因为const int只在C++中才被视为常量,且VS不支持VLA
回复 支持 反对

使用道具 举报

艾的民 2022-12-22 19:46:26 显示全部楼层
VS不让定义变长数组,因为用的编译器不是GCC的
但是可以这样实现同样的功能,比如:


#include<stdio.h>


int main(){
int n=0;
scanf("%d",&n);
int* num = new int[n];//分配动态存储空间
for(int i=0;i<n;i++){
scanf("%d",&num);
}
for(int i=0;i<n;i++){
printf("%d ",num);
}
delete num;//记得删掉
return 0;
}
回复 支持 反对

使用道具 举报

艾的民 2022-12-22 19:47:00 显示全部楼层
大佬免费解答问题

number不是常数吗 为何错误-1.jpg
回复 支持 反对

使用道具 举报

shiyuanz 2022-12-22 19:47:58 显示全部楼层
没错,只是vs不能支持完整的c语言标准
回复 支持 反对

使用道具 举报

aixxxbb 2022-12-22 19:48:31 显示全部楼层
可以定义一个名字为prime的指针,然后用malloc
回复 支持 反对

使用道具 举报

jason_og9F5 2022-12-22 19:49:26 显示全部楼层
老生常谈的问题,常量是define的。
int是变量,所以吧int换成define就好了。
回复 支持 反对

使用道具 举报

als6k4d9i 2022-12-22 19:50:03 显示全部楼层
gcc也不可以吧
回复 支持 反对

使用道具 举报

shentengfei 2022-12-22 19:50:21 显示全部楼层
const其实是不可改变的意思,不能说是标准的常量
回复 支持 反对

使用道具 举报

bws 2022-12-22 19:51:13 显示全部楼层
const换成constexpr试试,const只是表示只读,常量的意义有constexpr表示
回复 支持 反对

使用道具 举报

nknusqhkfgkx 2022-12-22 19:51:36 显示全部楼层
constexpr才是常量
回复 支持 反对

使用道具 举报

艾的民 2022-12-22 19:52:14 显示全部楼层
变长数组,有的编译器不支持。最好别这么弄
回复 支持 反对

使用道具 举报

契约者 2022-12-22 19:52:44 显示全部楼层
首先,const变量也是变量。用变量作为长度的数组在C23标准之前绝对禁止初始化,从C23开始只允许全零初始化,即以下形式:
int n = 10, a[n] = {};
其次,您可能是MSVC的受害者。VS默认使用的MSVC是C++编译器,并不能完全支持C的编译。如果要使用VS编译C程序,在项目属性中把平台工具集换成LLVM

number不是常数吗 为何错误-1.jpg
回复 支持 反对

使用道具 举报

艾的民 2022-12-22 19:53:16 显示全部楼层
不支持变长数组,用gcc编译就可以。
而且你还有一个问题,变长数组不能初始化,因为变长数组需要等变量值确定以后,才在程序中创建。
你以为可能是变量的数值替换括号里的文本,实际上不是这样,实际上是在程序执行中才创建的数组,所以不能在定义时初始化。
而且这玩意本质上也是静态数组,很不好用,还是malloc好使,学学用这个。
回复 支持 反对

使用道具 举报

说点什么

您需要登录后才可以回帖 登录 | 立即注册
HOT • 推荐