程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 結構體、共用體和用戶定義類型(1),共用定義

結構體、共用體和用戶定義類型(1),共用定義

編輯:關於C語言

結構體、共用體和用戶定義類型(1),共用定義


  C語言的基本類型有:整型(int)、字符型(char)、浮點型(float)、雙精度型(double)、空值型(void)以及派生類型 (指針和數組)。本章介紹C語言中可由用戶構造的三種數據類型:

  (1)用戶定義類型(typedef);(2)結構體(struct);(3)共用體(union);

  1 用typedef說明新類型名

  C語言允許用 typedef 說明一種新類型名,一般形式為:

    typedef  類型名  標識符;

  “類型名”必須是在此語句前已有定義的類型標識符。“標識符”是一個用戶定義標識符。typedef 語句的作用僅僅是用“標識符”來代表已存在的“類型名”,並不產生新的數據類型,原有類型名依然有效。例如:

    typedef  int  INTEGER;

  該語句把一個用戶命名的標識符 INTEGER 說明稱一個 int 類型的類型名。在此說明之後,可以用標識符 INTEGER 來定義整型變量。例如:

    INTEGER m, n;  等價於  int m, n;

  INTEGER 是 int 的一個別名。為便於識別,一般習慣將新的類型名用大寫字母表示。如:

    typedef char* CHARP;

    CHARP p;

  等價於:char* p;

   2 結構體類型

  2.1結構體類型的說明

  結構體類型說明的一般形式為:

    struct 結構體標識名

    {

      類型名1  結構成員名表1

      類型名2  結構成員名表2

      ...

      類型名n  結構成員名表n

    };

  其中 struct 是關鍵字。“結構體標識名”和“結構成員名”是用戶定義的標識符,其中“結構體標識名”是可選項,在說明中可以不出現。每個“結構成員名表”中都可以含有多個同類型的成員名,它們之間用逗號隔開。結構體中的成員名可以和程序中的其他變量同名;不同結構體中的成員也可以同名。注意:結構體說明同樣要以分號(;)結尾。

    struct date

    {int year, month, day;};

  結構體類型說明中的“類型名”,不僅可以是簡單數據類型,也可以是結構體類型。當結構體說明中又包含結構體時,成為結構體的嵌套。如下:

    struct student

    {

      char name[12];

      char sex;

      struct date birthday;

      float sc[4];

    };

  ANSI C 標准規定結構體至少允許嵌套15層,允許內嵌結構體成員的名字與外層成員的名字相同。

  結構體類型的說明只是列出了該結構的組成情況,標志著這種類型的結構“模式”已經存在,編譯程序並沒有因此而分配任何存儲空間。真正占有存儲空間的仍是具有相應結構體類型的變量、數組以及動態開辟的存儲單元。因此,在使用結構體變量、數組或指針變量前,必須先對這些變量、數組或指針變量進行定義。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved