首页 > 解决方案 > 结构指针数组的问题

问题描述

在定义了 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 作为退出状态。这是为什么?

标签: cpointersstructtypedef

解决方案


指针students[0]未初始化。取消引用它会导致未定义的行为。

在尝试访问它之前,使用有效对象的地址对其进行初始化。

student test;
students[0] = &test;

strcpy(students[0]->name, "test");
strcpy(students[0]->surname, "test");
students[0]->grade = 18;

推荐阅读