2013-05-07 169 views
0

我很喜歡braindead,現在無法想象,所以有人請幫助我。全局結構陣列

定義結構

typedef struct student { 
char name[MAX_NAME_LEN]; 
int num_courses; 
int course_id[MAX_COURSES_PER_STUDENT]; 
} STUDENT; 

,並使其在1檔全球STUDENT student[MAX_STUDENTS]; ,並試圖引用它在另一個extern STUDENT *student;, 但如果我嘗試訪問student[0].name它包含\0\0\0...,我只是得到一個賽格故障。

+0

你是如何創造你試圖引用的結構? – 2013-05-07 00:01:40

+0

'學生學生[MAX_STUDENTS];'。我檢查了第一個文件中的數據,但第二個文件中沒有。可能與指針和它的一個數組有關,但我太累了無法解決它。 – ICantNameMe 2013-05-07 00:03:24

回答

0

您需要將extern聲明爲數組,而不是指針。

extern STUDENT student[]; 

參見:trouble accessing external float array

+0

所以我只是用[]代替*而我很好?這是有史以來最簡單的修復。 – ICantNameMe 2013-05-07 00:05:07

+0

指針和數組在C中的許多地方是可以互換的 - 但這不是其中之一。你實際上在這裏宣佈了一個存儲區域,所以你需要這樣說。 – 2013-05-07 00:12:06