結構體 詳解

2021-08-21 14:25:34 字數 684 閱讀 4586

1、c語言基本型別:字元型,整型,浮點型

2、結構體(複雜型別):自定義型別  i

3、定義變數:為了分配空間

型別 變數名;    //注:分配空間編譯器通過型別來分配

初始化:定義變數同時賦值

3.1定義結構體(自定義)的型別

struct 型別名

;3.1.1無巢狀結構體:所有屬性都是基本型別

//定義人的型別:人的資訊(姓名,姓別,身高)

struct people

;3.1.2巢狀結構體:屬性是乙個結構體變數

struct people

;3.2定義結構體變數:型別 變數名;

struct 型別名 變數名;

3.3引用結構元素:一定要通過結構體變數來引用屬性。

.運算子 :引用複雜型別的成員

變數名.屬性; 

3.4結構體的分配空間法則:以最大字元素位元組對齊    (*)

1、查詢最大元素的型別

2、每個元素都分配以最大型別的最小的倍數。

3、共享空間?

注:gcc編譯器可以指定對齊方式(這不是c語言的標準)

__attribute__((packed))

3.5結構體變數之間賦值:   注:同型別之間,不同型別的結構體是不能賦值的

struct people a,b;

a=b;

結構體詳解

結構體宣告 struct tag 結構體名稱可以省略,但建議不要省略 s,p 可以在宣告的同時定義變數 舉個例子 struct x struct p,s 注意 這裡是匿名結構體,編譯器把二者看作完全不同的型別 結構體訪問 結構體訪問操作符 點操作符 操作符。struct stu p,s 成員訪問 s...

結構體對齊詳解

include struct a int main struct b 現在已知32位機器上各種資料型別的長度如下 char 1 有符號無符號同 short 2 有符號無符號同 int 4 有符號無符號同 long 4 有符號無符號同 float 4 double 8 那麼上面兩個結構大小如何呢?結果...

Linux Struct file 結構體詳解

二 struct path f path 被定義在linux include linux namei.h中,其原型為 struct path 在早些版本的核心中並沒有此結構,而是直接將path的兩個資料成員作為struct file的資料成員,struct vfsmount mnt的作用是指出該檔案...