C語言中的結構體,結構體中陣列初始化與賦值

2021-08-14 07:18:16 字數 971 閱讀 1389

最近寫c語言中的結構體遇到了些問題,從網上找了些資料如下:

結構體是連續儲存的,但由於結構體中成員型別各異,所以會存在記憶體對齊問題,也就是記憶體裡面會有空檔,

具體的對齊方式這裡 暫不討論;

結構體是可以直接初始化的,在定義的時候,就可以初始化,而且如果你的結構體中恰好有字元陣列的話,這個時候初始化是不錯的選擇,原因很簡單,字元陣列只能定義的時候直接初始化

後來就不可以了,後來你就只能用strcpy函式來拷貝初始化了。

struct 結構體名

第1種:

struct 結構體名

變數名1;

第2種:

struct 結構體名

;struct 結構體名 變數名2;

第3種:

typedef struct 結構體名

結構體別名;

結構體別名 變數名3;

訪問結構體成員的2種方式:

1、直接訪問:結構體變數名.成員名

2、指標訪問:結構體變數指標->成員名

1. struct 結構體名 變數名 = ;

2. struct 結構體名 變數名 =

;3. struct 結構體名 變數名 =

;

第2、3種方式成員順序可以打亂,甚至可以只初始化其中某幾個成員。3種初始化的方式在linux下使用gcc編譯均可通過。

1、內部的結構體名稱定義齊全

struct student

name;

};引用c成員的方式: 變數.name.c

2、 內部的結構體通常定義為無名結構體

struct student;};

引用c成員的方式:變數.c

C語言中的結構體陣列

c語言中的結構體陣列。它定義了許多煩雜的資料內容。把許多資料集中在一起處理。這樣容易管理繁雜的資料內容。例項 小狗的 名字 顏色 體重 和年齡 統一管理 include int main stu1 printf s s d d n stu1.name,stu1.color,stu1.weight,s...

中結構體與C語言中結構體的區別

在c語言中,可以定義結構體型別,將多個相關的變數包裝成為乙個整體使用。在結構體中的變數,可以是相同 部分相同,或完全不同的資料型別。在c語言中,結構體不能包含函式。在物件導向的程式設計中,物件具有狀態 屬性 和行為,狀態儲存在成員變數中,行為通過成員方法 函式 來實現。c語言中的結構體只能描述乙個物...

C語言中結構體

struct oursvoid main struct ours o2 01 結構體整體直接賦值的時候,即使字串也可以直接賦值 o1.str o2.str 錯誤,字串不能直接賦值 字串拷貝的方式 sprintf o1.str,02.str strcpy o1.str,o2.str 3.1 第一種情況...