关于#c语言#的问题:int number[cnt]

img


int number[cnt];为什么不行?数组不能是变量?
怎么修改?

用变量做数组的长度,应该是需要C99支持。
可以改为( int * number = (int *)malloc(sizeof(int)*cnt) )这样用函数malloc()动态分配一块内存来存储整数。
修改如下:

#include <stdio.h>
#include <stdlib.h>
int main(void){
    
    int x;
    double sum = 0;
    int cnt;
    
    printf("请输入数字的数量:");
    scanf("%d",&cnt);
    
    int * number = (int *)malloc(sizeof(int)*cnt);
    int i=0;
    if(cnt>0){
        
        
        scanf("%d",&x);
        
        while(x!=-1){
            number[i]=x;
            sum+=x;
            i++;
            scanf("%d",&x);
        }
    } 
    

    for(i=0;i<cnt;i++){
        printf("%d ",number[i]);
    }
    
    
    return 0;
    
} 

img

要求数组大小不能使用变量,你可以定义一个足够大的数组,或者用动态分配
int * number = (int*)malloc(cnt * sizeof(int));

这个语法gcc 下可以。vc下不行。