#include<stdio.h>
int main(void){
const int size=5;
int grades[size]={34,23,67,89,68};
double sum=0.0;
double *ptr_to_sum=∑
int i;
printf("\n my grades are:\n");
for(i=0;i<size;i++){
printf("%d\t",grades[i]);}
printf("\n\n");
for(i=0;i<size;i++){
sum+=grades[i];
}
printf("my average grade is %.2f\n\n",sum/size);
printf("\n\n");
printf("sum is at %p, or %luandis%lf\n",ptr_to_sum,ptr_to_sum,*ptr_to_sum);
printf("grades are at %lu to %lu\n",grades,grades+5);
}
即使是一个简单的代码,我也无法弄清楚错误,代码是正确的,但我只是不知道为什么会出现这个错误。请任何人都可以帮助我吗?经过深思熟虑后,我可以假装这是由于用于总和的数据类型 long 而发生的。
ERROR:pointers.c: In function 'main':
pointers.c:7:5: error: variable-sized object may not be initialized
7 | int grades[size]={34,23,67,89,68};
| ^~~
pointers.c:7:23: warning: excess elements in array initializer
7 | int grades[size]={34,23,67,89,68};
| ^~
pointers.c:7:23: note: (near initialization for 'grades')
pointers.c:7:26: warning: excess elements in array initializer
7 | int grades[size]={34,23,67,89,68};
| ^~
pointers.c:7:26: note: (near initialization for 'grades')
pointers.c:7:29: warning: excess elements in array initializer
7 | int grades[size]={34,23,67,89,68};
| ^~
pointers.c:7:29: note: (near initialization for 'grades')
pointers.c:7:32: warning: excess elements in array initializer
7 | int grades[size]={34,23,67,89,68};
| ^~
pointers.c:7:32: note: (near initialization for 'grades')
pointers.c:7:35: warning: excess elements in array initializer
7 | int grades[size]={34,23,67,89,68};
| ^~
pointers.c:7:35: note: (near initialization for 'grades')
抱怨是你有一个由变量给出的大小(所以它不是常数)和一个初始化器列表。这里:
const int size=5;
int grades[size]={34,23,67,89,68};
试试这个:
int grades[] = {34,23,67,89,68};
如果您确实需要将大小作为变量/常量,则以下任一方法都可以:
#define NUM_GRADES 5
int grades[] = {34,23,67,89,68};
...
for(i=0;i<NUM_GRADES;i++){
- 或者 -
int grades[] = {34,23,67,89,68};
int size = sizeof grades / sizeof grades[0];
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句