型別和變數有啥區別?
只能對變數賦值、訪問和運算,而不能對乙個型別賦值、訪問和運算。在編譯時,對型別是不分配空間的,只對變數分配空間。
如果指標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...