簡體   English   中英

可變大小 object 可能未初始化

[英]Variable-sized object may not be initialized

在第 6 行中,似乎 int 可變大小 object 可能未初始化,int 有什么問題? 我該如何解決?

#include <stdio.h>
int main (void)
{
    const int SIZE=5;
    //variable remain constant
    int grades[SIZE]= {66,50,93,67,100};
    double sum= 0.0;
    int i;
    
    printf("\nMy grades are:\n");

    for (i=0;i<SIZE;i++)//0 first character and < because last character is sentinel
        printf("%d\t",grades[i]);

    printf("\n\n");
    for (i=0;i<SIZE;i++) //analyze data in list and retrieve it
        sum=sum+grades[i];
    
    printf("My average is %.2f\n\n",sum/SIZE); //sum /size for average with decimals
    return 0;
}

我希望使用簡單的一維數組找到平均值,但這個問題不允許我運行程序

SIZE不是常數

SIZE是一個const int ,但是,盡管聽起來很奇怪,但它仍然不是一個constant grades[SIZE]是一個變長數組 可變長度 arrays 可能未被初始化。 *1

const int SIZE=5;
int grades[SIZE]= {66,50,93,67,100};// error: variable-sized object may not be initialized

備選方案 1:使用常量

5是一個int類型的常量

#define SIZE 5
int grades[SIZE]= {66,50,93,67,100};

備選方案 2:及時分配

分配或復制來自某個來源的值,可能來自復合文字

const int SIZE=5;
int grades[SIZE];
               v-----------------------v compound literal
memcpy(grades, (int []){66,50,93,67,100}, sizeof grades);

*1也許 C 的未來版本將允許這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM