谁能告诉我如何完成此操作:数组与指针的关系代码

火花
#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=&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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

谁能告诉我这段代码的作用?

为什么我们使用此代码请谁能告诉我

谁能告诉我如何实现?

谁能告诉我是否使用正确的代码来打印此ArrayList中的内容?

谁能告诉我如何在Rails中执行此n个case / switch语句

谁能告诉我我的代码出了什么问题

谁能告诉我如何在代码中增加蛇的大小?

谁能告诉我这段代码是什么意思?

谁能告诉我上述代码之间的逻辑区别

谁能告诉我代码中发生了什么?

谁能告诉我如何在Firebase Firestore(Android)中存储自定义对象的数组

谁能告诉我为什么此代码不起作用并继续打印 0.00 km 作为最短距离?

谁能告诉我为什么我的代码将我的 Z 数组返回为 0?(CUDA C)

谁能告诉我这种效果是如何实现的?

我是 Laravel 初学者,谁能告诉我如何将数组插入数据库?

我如何获得此代码来告诉我单词在句子中的位置

谁能告诉我这个密码的名称?

谁能告诉我这行的意思?

有人可以告诉我如何简化此代码吗?

告诉我如何使用此代码在输入中而不是在跨度中显示变量

谁能告诉我staticCompressionIgnoreHitFrequency所需的点击次数和完成点击的时间段

谁能告诉我,为什么我的js代码未在jsfiddle上运行?

谁能告诉我为什么我的代码显示的pi值错误?

谁能告诉我为什么我在此C代码中出现分段错误?

谁能告诉我为什么我的过滤数组为空?

谁能告诉我他们是否在以下PHP代码中看到错误?

谁能告诉我快速排序代码中的错误是什么

谁能告诉我以下两个java代码(a)和(b)的时间复杂度

谁能告诉我是否可以在 wemos d1 mini 上刷 javascript 代码?