struct Student {
long long id, phone;
int score;
char name[20], gender[4], class[20];
};
// 宣告變數
struct Student s1;
struct Student class[100]; // 結構體陣列
// 定義時初始化
struct Student s1 = {2023001, 13800001111, 95, "張三", "男", "CS101"};
// 指定成員初始化 (C99)
struct Student s2 = {.name = "李四", .score = 88};
// 存取成員
printf("%s: %d\n", s1.name, s1.score);
// 指標存取
struct Student *p = &s1;
printf("%s\n", p->name); // 等同 (*p).name
struct Date { int year, month, day; };
struct Student {
// ... 其他欄位
struct Date birthday; // 嵌入
};
// 存取巢狀成員
s1.birthday.year = 2000;
printf("生日: %d-%02d-%02d\n", p->birthday.year, p->birthday.month, p->birthday.day);
#include <stdio.h>
struct Date { int y, m, d; };
struct Student {
long long id, phone;
int score;
char name[20], gender[4], class[20];
struct Date birthday;
};
int main() {
struct Student class[5];
for (int i = 0; i < 5; ++i) {
scanf("%lld %s %s %s %lld %d %d %d %d",
&class[i].id, class[i].name, class[i].gender, class[i].class,
&class[i].phone, &class[i].score,
&class[i].birthday.y, &class[i].birthday.m, &class[i].birthday.d);
}
for (int i = 0; i < 5; ++i) {
printf("%lld %s %s %s %lld %d %d-%02d-%02d\n",
class[i].id, class[i].name, class[i].gender, class[i].class,
class[i].phone, class[i].score,
class[i].birthday.y, class[i].birthday.m, class[i].birthday.d);
}
return 0;
}
掌握結構體是 C 語言進階的關鍵,為資料結構與系統程式設計奠基。