C語言學習筆記 自定義型別

2022-03-31 20:50:49 字數 874 閱讀 8424

型別和變數有啥區別?

只能對變數賦值、訪問和運算,而不能對乙個型別賦值、訪問和運算。在編譯時,對型別是不分配空間的,只對變數分配空間。

如果指標p指向乙個結構體變數stu,以下3種用法等價:

什麼是共用體型別?

有時想用同一段記憶體單元存放不同型別的變數。例如,把乙個short型變數,乙個char型變數,和乙個float型變數放在同乙個位址開始的記憶體單元中。以上3個變數在記憶體中佔的位元組數不同,但都從同一位址開始存放,也就是使用覆蓋技術,後乙個資料覆蓋了前面的資料。這種使幾個不同的變數共享同一段記憶體的結構,稱為「共用體」型別的結構。

定義共用體型別的一般形式為:

union 共用體名 變數表列;
舉例來說:

union data  data_1, data_2;
我想到的使用場景是:結構體變數的某個成員屬性待定,用上union可以避免重新增加乙個成員屬性或者重新定義乙個結構體型別。

列舉型別,宣告列舉型別的一般形式為:

enum 列舉名  變數名列表;
舉例來說:

enum color  my_color, your_color;
typedef#define

#define是在預編譯時處理的,它只能作簡單的字串替換,而typedef是在編譯階段處理的

更多的區別:

c語言 自定義型別

struct stu 分號不能丟 匿名結構體型別 struct x struct a 20 p p x 非法的操作,上面倆種完全是不同的宣告 struct node 結構體的自引用 struct node n1 null 直接初始化 struct node n2 null 結構體巢狀初始化 先來看下...

C語言自定義型別

在學習c語言的時候,它有很多的自定義型別,例如 結構體,列舉,聯合。這些型別在我們的日常使用的時候,或多或少的都會遇見到,下面就系統的介紹一下這幾種型別。一.結構體 1.結構體型別的宣告 通俗點來說,結構就是一些值的集合,這些值稱為成員變數,結構體的每個成員可以是不同型別的成員變數。如下所示 str...

C語言之自定義型別

結構體型別的建立struct tag stu struct class struct class1 int main 這裡編譯器會把上邊兩個宣告當作不同的型別,而且如果我們在想建立乙個相同成員的結構體class2,就必須的在main 函式前邊建立,這樣及其不方便。struct tag class i...