C語言之struct和union分析

2021-08-17 17:59:13 字數 1462 閱讀 9061

1.struct的小秘密

c語言中的struct可以看做變數的集合

struct的問題:

-空結構體占用多大記憶體?

相關測試**:

#include struct ts

;int main()

實驗結果

以上結果是執行在gcc編譯器,如果使用bcc編譯器,則結果不同,此問題屬於c語言中灰色地帶

2.結構體與柔性陣列

柔性陣列即陣列大小待定的陣列

c語言中可以由結構體產生柔性陣列

c語言中結構體的最後乙個元素可以是大小未知的陣列

柔性陣列的用法

相關測試**

#include #include struct softarray

;struct softarray* creat_soft_array(int size)

}void delete_soft_array(struct softarray* sa)

void func(struct softarray* sa) }}

int main()

delete_soft_array(sa);

return 0;

}

實驗結果

3.c語言中的union

c語言中的union在語法上與struct相似

union只分配最大成員的空間,所有成員共享這個空間

union的使用受系統大小端的影響

小端模式地位存放低位元組資料,大端模式地位存放高位元組資料

相關測試**

#include int system_mode()

; union sm sm;

sm.i = 1;

return sm.c;

}int main()

實驗結果

c語言之結構 struct

struct 結構就是建立乙個模板,類似於陣列,不過它可以擁有不同型別的變數,包括陣列 1,建立結構宣告 舉例 struct book char title 20 char author 20 float value 其中struct是關鍵字,book是結構名,裡面的titlt,author,val...

基礎C語言之Typedef和struct的結合使用

c語言typedef關鍵字 typedef 作為c語言中常見的關鍵字,用法有多種,經常用來改變或者說給一種型別另取乙個名字 include int main n1,n2,n3,narray 10 struct結構體關鍵字用來宣告乙個結構體型別 若在結構體後邊有字串例如上邊這個例子 則代表n1,n2,...

C語言之結構體 struct 詳解

目錄 原有的資料型別不能滿足需求,因此才設計了構造型別結構體 struct name 1.無名構造型別 2.有名構造型別 程式設計客棧 struct swww.cppcns.comtudent stu struct student stu2 3.別名構造體型別 typedef struct stud...