访问位于另一个指针结构中的指针结构中的成员的问题

Imp*_*act 1 c struct member

我在访问结构内的成员时遇到了一些麻烦。

我有一个 Student 和一个 Cursus 结构,它们的定义如下:

typedef struct {
    int* _notes;
    int _moyenne;
}Cursus;

typedef struct {
    Cursus* _mycursus; //1 francais, 2 english, 3 math
    char nom[255];
    char prenom[255];
    char classe[3];
}Student;
Run Code Online (Sandbox Code Playgroud)

在 main.c 中,我创建了这个:

Student * mystudents = (Student*) calloc(9,sizeof(Student));
Run Code Online (Sandbox Code Playgroud)

但是我无法访问具有索引的成员 这永远不会起作用,例如:

mystudents[index]->nom
Run Code Online (Sandbox Code Playgroud)

所以我找到了另一种方法来做到这一点

(mystudients+index)->nom 
Run Code Online (Sandbox Code Playgroud)

这是完美的工作!

现在我遇到的问题是下一个:我想这样做:

(mystudients+index)->(_mycursus+indexcursus)->_notes = (Cursus*)calloc(1,sizeof(Cursus);
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为它不接受我向“_mycrusus”添加括号的事实。如果我不能这样做,我该如何选择正确的诅咒?

谢谢你的帮助,

影响

Kon*_*lph 5

在 C 中,x[i]与 相同*(x + i)。在您的情况下,类型mystudents[index]Student,而不是Student*

因此,要么使用 ,(mystudents + index)->nom或者更传统地使用mystudents[index].nom.

其他成员也是如此:

mystudients[index]._mycursus = calloc(1, sizeof (Cursus));
mystudients[index]._mycursus[0]._notes = calloc(3, sizeof (int));
Run Code Online (Sandbox Code Playgroud)

等等。

请注意,你不应该投的返回值malloccalloc等等。