【发布时间】:2021-12-30 23:09:05
【问题描述】:
一个问题导致程序无法正常工作。我猜这与在结构数组中使用指针有关。尽管尝试了很多方法,但仍然没有发现:
#include <stdio.h>
typedef struct {
char* courseName;
char* courseDate;
double grade;
}EXAM;
int main() {
double averageGrade = 0;
EXAM *exams[5];
for(int i = 0; i < 5; i++){
printf("Please enter course name:\n");
scanf("%s", exams[i]->courseName);
printf("Please enter course date:\n");
scanf("%s", exams[i]->courseDate);
printf("Please enter course grade:\n");
scanf("%lf", &exams[i]->grade);
averageGrade += exams[i]->grade;
}
averageGrade /= 5;
printf("Your average grade is: %.1lf.", averageGrade);
return 0;
}
【问题讨论】:
-
EXAM *exams[5]定义了一个由 5 个指针组成的数组。该数组未初始化,因此exams[0]和exams[1]等在分配之前都是无意义的值。尝试将数据读入exams[0]->courseName是错误的,因为exams[0]不包含您可以写入的位置的地址。