關於這個問題有很多話題,但是我一直沒能找到適合我的解決方案;每當我嘗試更改student_t.member-> name時,我都會遇到分段錯誤。下面是我需要使用的typedef結構:用C語言編程:修改struct的成員值給出段錯誤
typedef struct degree_t degree_t;
typedef struct student_t student_t;
struct degree_t {
student_t* member;
int course_id;
}
struct student_t {
char* name;
int age;
}
int main(int argc, char* argv[]) {
student_t *students = malloc(sizeof(student_t) * 3);
degree_t *degrees = malloc(sizeof(degree_t));
for (int i=0; i<3; i++) {
degrees[i].course_id = 1;
degrees[i].member->name = "Bob";
}
return 0;
}
我可以改變度[I] .course_id完美的罰款,但每當我試圖改變度[I]。成員 - >名字,我得到一個分段故障。
GDB表明這是行度[i] .member-> name =「Bob」的結果,但我不明白爲什麼,並且我不知道如何有效更改值度[i] .member->名稱
確保爲所有* *指針,包括你的'struct's內部分配內存。順便說一句,寫得很好,再加上一個。 – Bathsheba
謝謝!我希望閱讀這本書不會太過噩夢。但是我對分配略有困惑 - 哪些指針錯過了爲內存分配? –