struct Person { int age; double height; char *name; };
struct Person p = {18, 1.80, "jack"}; // 定義並初始化
struct Person p2 = {.age=19, .height=1.76, .name="tom"}; // C99 指定初始化器
struct Date {int y,m,d;} 佔 12 字節(連續)。struct Student {int age; char *name;} 佔 16 字節(64位下指針 8 字節,結構體大小為最大成員對齊的倍數)。p.age = 20; p = {19, 1.77, "jame"}; // 錯誤:僅初始化時可用花括號列表
結構體變量間可整體賦值(淺拷貝)。
student *ps = &stu;
stu.age; // 1. 變量名直接訪問
(*ps).age; // 2. 解引用後訪問
ps->age; // 3. 箭頭運算符(推薦)
struct Date {int y,m,d;};
struct Student {int age; struct Date birthday;};
struct Student s = {18, {1996,9,9}};
int(含 long/short/signed/unsigned)、float/double、char(1字節,存 ASCII)。