在定义了student类型(这是一个由两个字符数组和一个int组成的结构)之后,我创建了一个指向student的指针数组,我需要它来修改一系列函数中的内容。
int main(void)
{
student* students[NUMBER_OF_STUDENTS];
strcpy(students[0]->name, "test");
strcpy(students[0]->surname, "test");
students[0]->grade = 18;
return EXIT_SUCCESS;
}
我的问题是,这个简单的代码在运行后返回1作为退出状态。为什么?
最佳答案
指针没有指向任何地方,因为您没有为它们分配任何内存。
int main(void)
{
student* students = (student*)malloc(sizeof(student)*[NUMBER_OF_STUDENTS]); \\malloc dynamically allocate heap memory during runtime
strcpy(students[0]->name, "test");
strcpy(students[0]->surname, "test");
students[0]->grade = 18;
return EXIT_SUCCESS;
}
*请注意,Edit bymarko——严格地说,指针指向的是堆栈位置中最后一个或保存它的寄存器——它可能什么都不是,也可能是您真正关心的东西。乌兰巴托的欢乐
关于c - 结构指针数组的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56194133/