C語言之結構體

2021-07-24 13:47:07 字數 1618 閱讀 6837

在c語言中,可以使用結構體(struct)來存放一組不同型別的資料。結構體的定義形式為:

struct 結構體名;

結構體是一種集合,它裡面包含了多個變數或陣列,它們的型別可以相同,也可以不同,每個這樣的變數或陣列都稱為結構體的成員(member)。請看下面的乙個例子:

struct stu;

stu 為結構體名,它包含了 5 個成員,分別是 name、num、age、group、score。結構體成員的定義方式與變數和陣列的定義方式相同,只是不能初始化。

注意大括號後面的分號;不能少,這是一條完整的語句。

結構體也是一種資料型別,它由程式設計師自己定義,可以包含多個其他型別的資料。

像 int、float、char 等是由c語言本身提供的資料型別,不能再進行分拆,我們稱之為基本資料型別;而結構體可以包含多個基本型別的資料,也可以包含其他的結構體,我們將它稱為複雜資料型別或構造資料型別。

結構體變數

既然結構體是一種資料型別,那麼就可以用它來定義變數。例如:

struct stu stu1, stu2;

定義了兩個變數 stu1 和 stu2,它們都是 stu 型別,都由 5 個成員組成。注意關鍵字struct不能少。

stu 就像乙個「模板」,定義出來的變數都具有相同的性質。也可以將結構體比作「圖紙」,將結構體變數比作「零件」,根據同一張圖紙生產出來的零件的特性都是一樣的。

你也可以在定義結構體的同時定義結構體變數:

struct stu stu1, stu2;

將變數放在結構體定義的最後即可。

如果只需要 stu1、stu2 兩個變數,後面不需要再使用結構體名定義其他變數,那麼在定義時也可以不給出結構體名,如下所示:

struct stu1, stu2;

這樣做書寫簡單,但是因為沒有結構體名,後面就沒法用該結構體定義新的變數。

結構體和陣列類似,也是一組資料的集合,整體使用沒有太大的意義。陣列使用下標[ ]獲取單個元素,結構體使用點號.獲取單個成員。獲取結構體成員的一般格式為:

結構體變數名.成員名;

通過這種方式可以獲取成員的值,也可以給成員賦值:

#include

int main() stu1;

//給結構體成員賦值

stu1.name = "tom";

stu1.num = 12;

stu1.age = 18;

stu1.group = 'a';

stu1.score = 136.5;

//讀取結構體成員的值

printf("%s的學號是%d,年齡是%d,在%c組,今年的成績是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);

return 0;

}執行結果:

tom的學號是12,年齡是18,在a組,今年的成績是136.5!

除了可以對成員進行逐一賦值,也可以在定義時整體賦值,例如:

struct stu1, stu2 = ;

不過整體賦值僅限於定義結構體變數的時候,在使用過程中只能對成員逐一賦值,這和陣列的賦值非常類似。

需要注意的是,結構體是一種自定義的資料型別,是建立變數的模板,不占用記憶體空間;結構體變數才包含了實實在在的資料,需要記憶體空間來儲存。

C語言之結構體

一 什麼是結構體 結構體是不同型別的資料組合成乙個有機整體。例如 學生的學號 姓名 性別 成績 位址 這些都是乙個學生的屬性,把這些屬性組織成乙個組合,組合中包含不同的資料型別,c和c 允許指定這樣的資料型別,稱為結構體。struct student 申明乙個結構體型別 struct是結構體申明的關...

C語言之結構體

在c語言中,有一種型別聽著很任性,叫做自定義型別。顧名思義,這種型別是程式設計師自己定義的一種型別,它和陣列很相似,但也有一些區別。自定義型別包含以下幾種 結構體 列舉 聯合 結構體就是將具有不同或相同的型別放在一起的聚合型別。可能聽著有些像順口溜,上一段 捋一捋。struct peo a 在 中我...

c語言之結構體

結構體 為什麼需要結構體 為了表示一些複雜的事物,而普通的基本型別無 法滿足實際需求。什麼叫結構體 把一些基本型別資料組合在一起形成的乙個新的復合資料型別,這個叫結構體 如何定義結構體 第一種方式 這只是定義了乙個新的資料型別,並沒有定義變數 struct student 第二種方式 struct ...