首頁>Club>
為什麼我感覺這兩種資料形式並沒有什麼太大用處?
7
回覆列表
  • 1 # Polarix

    資料結構的使用本身沒有章法可尋,易用、易懂就是好辦法。

    如果我沒理解錯,你說的這個“聯合”應該是共用體(union)

    但是就常用角度來說,共用體常用於資料的聯合與轉換,例如這樣:

    typedef union

    {

    int Integer;

    unsigned char Bytes[4];

    }INTEGER;

    這樣就可以方便的將一個int型分解成四個位元組,特別是編寫底層驅動時候,此方法十分有用,如果是在C++中佐以運算子過載,使用將更加方便。

    再說列舉,列舉型別本身其實是int或unsigned int型別,其意義在於歸類定義某一類常量值。比如最常見的布林型就可以理解成一種特殊列舉:

    typedef enum

    {

    false = 0;

    true = !false;

    }bool;

    同樣,列舉可以實現更多型別的多型定義。

    從邏輯本質上來講,列舉與宏定義有相似之處,但列舉的使用使程式碼更易讀,更規範,例如如果兩個不同的列舉值都為1,但因為在不同的列舉中,是不可以在不進行強制型別轉換的前提下通用的,但宏定義無法實現此限制。

    篇幅有限,手機碼字排版太累,多去開源社群逛逛,看看別人寫的程式碼,看多了,自然就懂了。

  • 2 # Andy001847

    C語言之所以有聯合的出現,是因為以前儲存空間過於狹小,為了節省空間設計的,現在空間足夠完全可以用結構體替代。聯合的用法和結構體很類似,不同在於聯合各個變數共享一個空間(最大變數的尺寸),而結構體每個變數都有自己的空間。列舉一般用於代表常量,比如一年四季,十二個月份以及星期等等。實際內容也是一個常數,只是為了增加可讀性,固有列舉型別。

  • 3 # 金日老油條

    我來回答,聯合體在嵌入式系統裡主要方便通訊和儲存,為什麼?程式裡需要用到的全域性變數可能各種型別,大小不一。但是儲存(比如DSP或微控制器裡的Flash儲存)和通訊(常規的串列埠,TCP/IP),基本都是一個一個位元組處理。怎麼將兩者統一,聯合體就是最好的辦法。使用時注意兩個問題:位元組對齊,大小端

  • 中秋節和大豐收的關聯?
  • 東方不敗,任我行,嶽不群,左冷禪誰最壞,最令人討厭?