在定义数组时,数组大小必须是常量,不能使变量或变量表达式

#include<stdio.h>
void main()
{
const int n=5; //定义n为常量变量为什么还会出错
int i;
int a[n];
for(i=0;i<n;i++)
{
a[i]=i;
printf("%d ",a[i]);
}
printf("\n");
}

int const n=5;
尽管n的值是常量5,不允许通过n改变,但是 ,并不等于n的值不能改变,实际上可以通过指针对其值进行修改,比如int *p=&n; *p=12; 这样那个就修改了n的值(将&n赋值给p的时候编译器可能会发出警告),所以n是一个变量,是一个特殊的变量,被称为常变量。
因此,n不是一个常量,只是一个不能通过n来修改其值的一个变量。所以不能用它来给定数组的大小。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-31
你如果用vc6的话,这样是不行的,因为vc6有自己的一套标准,不遵守c/c++标准
vc2002以后的版本就正常了

vc6这种情况可以用枚举常量代替const常量:
enum { n=5};
int a[n];本回答被网友采纳
第2个回答  2014-01-31
数组用常数定义大小就行追问

那我那个有什么错

追答

int a[5];
就对了

相似回答