一、定義和使用Struct
Struct是C語言中構建複雜數據類型的基礎。它可以包含多個不同的變量,並且可以用一個變量名引用它們。定義一個struct需要先定義它的類型名,再定義結構體的變量。
/* 定義struct類型 */
struct Person {
char name[20];
int age;
int id;
};
/* 定義struct變量 */
struct Person someone;
在定義一個struct變量時,可以直接為其中的變量賦初值。
/* 直接為變量賦初值 */
struct Person someone = {"Tom", 20, 123456};
訪問struct變量的成員可以使用「.」運算符。
/* 訪問某一成員 */
printf("Name: %s\n", someone.name);
二、Struct和指針
使用struct指針可以更方便地訪問和修改struct的成員。在定義struct類型時,加上「*」可以定義一個指向該類型的指針。
/* 定義指向Person類型的指針 */ struct Person *ptr;
訪問struct變量的成員可以使用「->」運算符。
/* 使用指針訪問變量 */
ptr = &someone;
printf("Age: %d\n", ptr->age);
同時,使用指針可以更方便地傳遞struct類型的參數。
/* 傳遞指針作為參數 */
void display(struct Person *p) {
printf("ID: %d\n", p->id);
}
display(&someone);
三、Struct和數組
數組可以存儲多個相同類型的數據,struct也可以存儲多個相同類型的數據。使用數組和struct可以構建更複雜的數據結構。
/* 定義存儲多個Person類型的數組 */
struct Person group[3];
/* 初始化數組 */
group[0] = {"Tom", 20, 123456};
group[1] = {"John", 21, 234567};
group[2] = {"Mary", 22, 345678};
/* 輸出數組中第二個元素的名字 */
printf("Name: %s", group[1].name);
可以使用指針遍曆數組中的元素,並訪問其成員。
/* 使用指針遍曆數組並輸出其成員 */ for(int i=0; iname); }
四、Struct和文件讀寫
Struct可以使用文件進行讀寫操作,以此實現文件的持久化存儲。
/* 打開文件 */
FILE *fp;
fp = fopen("test.txt", "w");
/* 定義並寫入struct */
struct Person someone = {"Tom", 20, 123456};
fwrite(&someone, sizeof(struct Person), 1, fp);
/* 關閉文件 */
fclose(fp);
可以使用fread函數從文件中讀取struct數據。
/* 打開文件 */
fp = fopen("test.txt", "r");
/* 讀取文件並輸出內容 */
struct Person temp;
fread(&temp, sizeof(struct Person), 1, fp);
printf("Name: %s\nAge: %d\nID: %d\n", temp.name, temp.age, temp.id);
/* 關閉文件 */
fclose(fp);
五、Struct的高級應用
Struct還有很多高級應用,例如在struct中嵌套其他struct、使用typedef定義新類型、使用聯合體構建新類型等等。
/* 嵌套struct */
struct Date {
int year;
int month;
int day;
};
struct Student {
char name[20];
struct Date birth;
};
/* 使用typedef定義新類型 */
typedef struct {
char name[20];
int age;
} Person;
/* 使用聯合體構建新類型 */
union Data {
int count;
float weight;
};
struct Item {
int type;
union Data info;
};
原創文章,作者:ZBPPU,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/368578.html
微信掃一掃
支付寶掃一掃