Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c中使用指向结构的指针读取字段? 我们考虑C:中的下面一段代码 #include <stdio.h> #define SCORES 3 typedef struct struct_student{ char name[16]; float scores[SCORES]; float average; } STUDENT; int main(){ STUDENT student, *p; int i; p = &student; printf("Name:\n"); gets((*p).name); for(i=0;i<SCORES;i++){ printf("score:\n"); scanf("%f", &(*p).scores[i] ); (*p).average = (*p).average + (*p).scores[i]; } (*p).average = (*p).average/SCORES ; printf("%s has average %f\n",student.name, student.average); return 0; }_C_Pointers_Struct - Fatal编程技术网

如何在c中使用指向结构的指针读取字段? 我们考虑C:中的下面一段代码 #include <stdio.h> #define SCORES 3 typedef struct struct_student{ char name[16]; float scores[SCORES]; float average; } STUDENT; int main(){ STUDENT student, *p; int i; p = &student; printf("Name:\n"); gets((*p).name); for(i=0;i<SCORES;i++){ printf("score:\n"); scanf("%f", &(*p).scores[i] ); (*p).average = (*p).average + (*p).scores[i]; } (*p).average = (*p).average/SCORES ; printf("%s has average %f\n",student.name, student.average); return 0; }

如何在c中使用指向结构的指针读取字段? 我们考虑C:中的下面一段代码 #include <stdio.h> #define SCORES 3 typedef struct struct_student{ char name[16]; float scores[SCORES]; float average; } STUDENT; int main(){ STUDENT student, *p; int i; p = &student; printf("Name:\n"); gets((*p).name); for(i=0;i<SCORES;i++){ printf("score:\n"); scanf("%f", &(*p).scores[i] ); (*p).average = (*p).average + (*p).scores[i]; } (*p).average = (*p).average/SCORES ; printf("%s has average %f\n",student.name, student.average); return 0; },c,pointers,struct,C,Pointers,Struct,我是说。这似乎过于复杂了。我想知道是否有另一种使用“点符号”的方法。也就是说,我知道有一种更简单的“箭头符号”。但我认为,即使使用“点符号”,也有更好的方法来做到这一点。请注意,我试图理解如何使用“点表示法”,因此我对使用“箭头表示法”的解决方案不感兴趣。更隐秘的代码并不能产生更好的代码。如果出于某种奇怪的原因,想要避免->,那么(*p).scores+i。无关,摆脱get用法。它是如此邪恶,它被从标准库中删除是有充分理由的。欢迎使用堆栈溢出!与您的问题无关,但永远不要使用get函数。它是,甚至

我是说。这似乎过于复杂了。我想知道是否有另一种使用“点符号”的方法。也就是说,我知道有一种更简单的“箭头符号”。但我认为,即使使用“点符号”,也有更好的方法来做到这一点。请注意,我试图理解如何使用“点表示法”,因此我对使用“箭头表示法”的解决方案不感兴趣。更隐秘的代码并不能产生更好的代码。如果出于某种奇怪的原因,想要避免
->
,那么
(*p).scores+i
。无关,摆脱
get
用法。它是如此邪恶,它被从标准库中删除是有充分理由的。欢迎使用堆栈溢出!与您的问题无关,但永远不要使用
get
函数。它是,甚至已经从C规范中删除。改为使用例如…,这样您就可以输入一个包含空格的名称,例如
Da Silva
,但需要换行符。有一种更好的方法,但是您通过引入不必要的指针使点表示法变得更难<代码>扫描频率(“%f”)和学生分数[i]
&(*p).scores[i])
==>
p->scores+i
。更隐秘的代码并不能产生更好的代码。如果出于某种奇怪的原因,想要避免
->
,那么
(*p).scores+i
。无关,摆脱
get
用法。它是如此邪恶,它被从标准库中删除是有充分理由的。欢迎使用堆栈溢出!与您的问题无关,但永远不要使用
get
函数。它是,甚至已经从C规范中删除。改为使用例如…,这样您就可以输入一个包含空格的名称,例如
Da Silva
,但需要换行符。有一种更好的方法,但是您通过引入不必要的指针使点表示法变得更难<代码>扫描频率(“%f”)和学生分数[i]
scanf("%f", &(*p).scores[i] );