首先说一句重要的话:在c语言中规定a[n]中n不能为变量类型。
第一个:不正确
int n=10,a[n];
int n=10 定义的是变量,而常量的定义只能是#define N 10。
所以如果改成正确的应该是:
#define n 10;
int a[n];
第二个:不正确
const int n =10;
int a[n];
测试环境Dev-C++(gcc),有错误variable-sized object may not be initialized
意思是,变量大小的对象不能被初始化。
const只是限定该函数不可被修改,并不是真正意义上的常量!!!
最后:
这两种方法无论是在codeblocks还是devc++都可以成功运行。
但是在理论上来说对c来说两个方法都不对;对c++来说第一种不对,第二种对。


题外话,这甚至可以不用const关键字。
int n;
scanf("%d",&n);
int a[n];
这是允许的,也就是说,你可以先定义n,输入n的值,再定义a[n],这是被最新的编译器允许的
本文解析了C语言中数组定义的规范,强调了数组下标不能为变量类型的规定,并对比了不同编译环境下数组定义的有效性及语法差异。此外,还介绍了最新的编译器对数组定义的灵活处理。
1003

被折叠的 条评论
为什么被折叠?



