我想定义n个变量怎么办?

由于数组不能以
int n=5;
int a[n];的形式进行变量的定义,那么我应该怎么定义自己想要的n个变量呢?(顺便解释一下为什么不能这样定义n个变量)

数组是静态分配内存的,也就是编译时就分配好,不能在程序执行时改变,动态分配内存可以用malloc函数,比如:

int n;
scanf("%d", &n);    // 输入数组大小
int *a = (int *)malloc(sizeof(int)*n);    // malloc是以字节为单位分配的,所以要用int型的大小乘以长度
for(int i=0;i<n;i++){
    printf("请输入a[%d] :", i);
    scanf("%d", &a[i]);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-31
int n=5;
int a[n];这个是因为n是变量。所以不行
一般这样
#define n 5;
int a[n];
上面的可以
第二种,直接输入常数 如 int a[5];
如果不知道n有多大,一般会将数组定义一个比较大的数组。如int a[100];
当然还有动态分配空间,这里你肯定没有学,这种方式比较复杂,以后会知道的追问

谢谢。

第2个回答  2014-05-31

可以利用动态内存分配

int n=5;
int *a=(int*)malloc(sizeof(int)*5);

另注:C99后支持可变长数组,所以lz的做法在C99后是允许的

追问

谢谢了。