在c語言中,可以使用結構體(struct)來存放一組不同型別的資料。結構體的定義形式為:
struct結構體名
變數名表列
;
結構體是一種集合,它裡面包含了多個變數或陣列,它們的型別可以相同,也可以不同,每個這樣的變數或陣列都稱為結構體的成員(member)。請看下面的乙個例子:
structstu;
像 int、float、char 等是由c語言本身提供的資料型別,不能再進行分拆,我們稱之為基本資料型別;而結構體可以包含多個基本型別的資料,也可以包含其他的結構體,我們將它稱為複雜資料型別或構造資料型別。
結構體使用點號.
獲取單個成員。獲取結構體成員的一般格式為:結構體變數名.成員名;
通過這種方式可以獲取成員的值,也可以給成員賦值:
intmain() 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);
除了可以對成員進行逐一賦值,也可以在定義時整體賦值,例如:
structstu1, stu2 = ;
在c語言中,定義結構體陣列和定義結構體變數的方式類似,請看下面的例子:
structstuclass[5];
結構體陣列在定義的同時也可以初始化(當對陣列中全部元素賦值時,也可不給出陣列長度),例如:
structstuclass[5] =,,,
,};
結構體陣列的使用也很簡單,例如,獲取 wang ming 的成績:
class[4].score;
修改 li ping 的學習小組:
class[0].group = 'b';
當乙個指標變數指向結構體時,我們就稱它為結構體指標。
struct 結構體名 *變數名;
在定義結構體的同時定義結構體指標:
structstu stu1 = , *pointer= &stu1;
結構體指標可以獲取結構體成員:
(*pointer).name//或者
pointer->name
第一種寫法中,.
的優先順序高於*
,(*pointer)
兩邊的括號不能少。如果去掉括號寫作*pointer.membername
,那麼就等效於*(pointer.membername)
,這樣意義就完全不對了。
第二種寫法中,->
是乙個新的運算子,習慣稱它為「箭頭」,有了它,可以通過結構體指標直接取得結構體成員;這也是->
在c語言中的唯一用途。
c語言基礎 結構體
結構體也是一種資料型別 這種資料型別裡面可以定義不同的資料型別的資料,是一種使用者自定義的資料型別 當然結構體裡面可以巢狀陣列和結構體 結構體的定義 struct 結構體名 注意 結構體的命名用駝峰法 每乙個成員變數後面要加上 在最後的 後面要加上 結構體變數的定義 struct 結構體名 結構體變...
C語言基礎 C語言結構體 4 結構體陣列
上一節,我們講解了一下結構體的定義方式,作用域,以及注意事項,這次我們來講解結構體陣列.有些人疑問,結構體也有陣列啊?這是肯定的,其實結構體陣列非常常用,下面我們來看乙個需求示意圖 按照上圖所示,如果我們要求這樣子輸出,我們就要有幾個不同型別的陣列才能完成,但如果有了結構體,我們就可以非常簡單的完成...
C語言基礎 12 結構體
c語言裡可以在乙個儲存區里記錄多個數字 這種儲存區的型別叫結構體型別,這種型別需要首先建立出來然後才能使用結構體儲存區里包含多個子儲存區,每個子儲存區可以記錄乙個數字結構體裡不同子儲存區的型別可以不同,子儲存區型別也可以是結構體型別 結構體宣告語句可以建立結構體型別 結構體宣告語句中需要使用 str...