我在访问结构内的成员时遇到了一些麻烦。
我有一个 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”添加括号的事实。如果我不能这样做,我该如何选择正确的诅咒?
谢谢你的帮助,
影响
在 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)
等等。
请注意,你不应该投的返回值malloc,calloc等等。