當前位置: 華文頭條 > 推薦

15.C語言:結構體的定義和使用

2024-02-17推薦

C語言中的結構體(Structures)是一種自訂的數據型別,允許你將不同型別的數據項組合成一個單一的數據型別。結構體是復合數據型別的一種,它使得相關的數據能夠以一個單元儲存和處理。

定義結構體

結構體的定義使用關鍵字 struct,後跟結構體的名稱和一對花括弧,花括弧內是結構體的成員列表。每個成員都有其數據型別和名稱。

// 定義一個名為Person的結構體struct Person { char name[50]; int age; float height;};

聲明結構體變量

定義結構體後,你可以聲明該型別的變量。結構體變量可以在定義時初始化,也可以在之後賦值。

// 聲明一個Person型別的變量struct Person person1;// 聲明並初始化結構體變量struct Person person2 = {"Alice", 30, 5.5};

存取結構體成員

你可以使用點運算子(.)來存取結構體的成員。

// 賦值結構體成員person1.age = 25;strcpy(person1.name, "Bob"); // 使用strcpy來復制字串person1.height = 6.0;// 存取結構體成員printf("Name: %s\n", person1.name);printf("Age: %d\n", person1.age);printf("Height: %.2f\n", person1.height);

結構體指標

你還可以建立指向結構體的指標,這樣可以透過指標存取結構體的成員。使用箭頭運算子(->)來存取結構體指標所指向的成員。

// 建立結構體指標struct Person *ptr = &person1;// 透過指標存取結構體成員ptr->age = 26;strcpy(ptr->name, "Charlie");ptr->height = 5.8;// 透過指標打印結構體成員printf("Name: %s\n", ptr->name);printf("Age: %d\n", ptr->age);printf("Height: %.2f\n", ptr->height);

結構體作為函式參數

結構體可以作為函式的參數傳遞,可以傳遞結構體本身或者結構體的指標。

// 函式聲明,傳遞結構體本身void printPerson(struct Person p) { printf("Name: %s\n", p.name); printf("Age: %d\n", p.age); printf("Height: %.2f\n", p.height);}// 函式聲明,傳遞結構體指標void modifyPerson(struct Person *p) { p->age += 1; // 增加年齡}// 呼叫函式printPerson(person1);modifyPerson(&person1);printPerson(person1); // 註意年齡增加了

結構體陣列

結構體也可以定義成陣列形式,用於儲存多個結構體變量。

// 定義一個結構體陣列struct Person people[3];// 初始化結構體陣列people[0] = (struct Person){"Dave", 28, 5.9};people[1] = (struct Person){"Eve", 34, 5.6};people[2] = (struct Person){"Frank", 40, 5.7};// 遍歷結構體陣列for (int i = 0; i < 3; i++) { printPerson(people[i]);}

結構體巢狀

結構體可以巢狀其他結構體作為其成員。

// 定義一個地址結構體struct Address { char street[100]; char city[50]; int zipCode;};// 修改Person結構體,加入Address作為成員struct Person { char name[50]; int age; float height; struct Address address; // 巢狀結構體作為成員};// 使用巢狀結構體struct Person person3 = { "Grace", 27, 5.4, {"123 Main St", "Metropolis", 12345}};printf("Name: %s\n", person3.name);printf("Street: %s\n", person3.address.street);

透過這些例子,你可以看到如何在C語言中定義、聲明、初始化、存取和操作結構體。結構體是C語言中處理相關數據的非常有用的工具,能夠幫助你構建更加復雜和組織化的數據結構。