[英]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.