與空的方括號[]
聲明的結構構件被稱爲柔性陣列構件。這在comp.lang.c FAQ,問題2.6(滾動至底部)中有解釋。一個靈活的數組成員可能只會作爲結構的最後聲明成員出現,這是編譯器所抱怨的。
但是將它移動到結構的末尾並不是最好的解決方案;你可能根本不想使用靈活的數組成員。 (你可以,但它引入了不必要的複雜性。)
由於dasblinkenlight說,你可以使name
成員的指針:然後
struct person {
char *name;
int age;
};
name
將指向代表這個人的名字的字符串 - 這意味着你需要分配內存來保存字符串。
也可以使name
的char
陣列,具有固定的最大尺寸:
#define MAX_NAME 50
struct person {
char name[MAX_NAME];
int age;
};
然後,您可以使用strcpy
函數的值複製到name
- 小心不要嘗試複製超過MAX_NAME
字節。
在你insert
功能,這些語句:
people[nextcell].names;
people[nextcell].ages;
據推測打算初始化names
和ages
成員(更好的名稱:name
和age
),但實際上他們什麼都不做;他們指的是那些成員,但他們沒有對他們做任何事情。對於age
,你可以簡單的age
參數的值(您當前忽略)分配給age
成員:
people[nextcell].age = age;
的方式分配一個值name
取決於您是否決定將其定義爲一個指針或一個數組。
這看起來像一個學生項目。你想讓我們做你的功課嗎? – YePhIcK 2012-07-14 19:33:09
不是真的,只是想明白我的問題是什麼 – 2012-07-14 19:35:51