C Note(NO.6)

結構體:一般形式爲:
struct 結構名{

成員表列

}變量名錶列;

表示結構變量成員的一般形式是:
結構變量名.成員名

數組的元素也可以是結構類型的。因此可以構成結構型數組。結構數組的每一個元素都是具有相同結構類型的下標結構變量。
struct stu
{
    int num;
    char *name;
    char sex;
    float score;
}boy[5];

一個指針變量當用來指向一個結構變量時,稱之爲結構指針變量。結構指針變量中的值是所指向的結構變量的首地址。
 結構指針變量說明的一般形式爲:
struct 結構名 *結構指針變量名

其訪問的一般形式爲:
(*結構指針變量).成員名:括號不可少,爲成員符“.”的優先級高於“*”。
      或爲:
結構指針變量->成員名

 

指針變量可以指向一個結構數組,這時結構指針變量的值是整個結構數組的首地址。結構指針變量也可指向結構數組的一個元素,這時結構指針變量的值是該結構數組元素的首地址。一個結構指針變量雖然可以用來訪問結構變量或結構數組元素的成員,但是,不能使它指向一個成員。也就是說不允許取一個成員的地址來賦予它,即s=&stu[0]是錯的。
 

常用的內存管理函數有以下三個:
1. 分配內存空間函數 malloc
調用形式:
(類型說明符*)malloc(size)
功能:在內存的動態存儲區中分配一塊長度爲"size"字節的連續區域。函數的返回值爲該區域的首地址。“類型說明符”表示把該區域用於何種數據類型。(類型說明符*)表示把返回值強制轉換爲該類型指針。“ size”是一個無符號數。
                     pc=(char *)malloc(100);

2. 分配內存空間函數 calloc
calloc 也用於分配內存空間。
調用形式:
(類型說明符*)calloc(n,size)
功能:在內存動態存儲區中分配 n 塊長度爲“size”字節的連續區域。函數的返回值爲該區域的首地址。(類型說明符*)用於強制類型轉換。calloc 函數與 malloc 函數的區別僅在於一次可以分配 n 塊區域。
                  ps=(struet stu*)calloc(2,sizeof(struct stu));
3. 釋放內存空間函數 free
調用形式:
free(void*ptr);
功能:釋放 ptr 所指向的一塊內存空間, ptr 是一個任意類型的指針變量,它指向被釋放區域的首地址。被釋放區應是由 malloc 或 calloc 函數所分配的區域。

1. 枚舉的定義枚舉類型定義的一般形式爲:
        enum 枚舉名{ 枚舉值表 };例子:enum weekday{ sun,mou,tue,wed,thu,fri,sat };
在枚舉值表中應羅列出所有可用值。這些值也稱爲枚舉元素。

2. 枚舉變量的說明
如同結構和聯合一樣,枚舉變量也可用不同的方式說明,即先定義後說明,同時定
義說明或直接說明。
設有變量 a,b,c 被說明爲上述的 weekday,可採用下述任一種方式:
enum weekday{ sun,mou,tue,wed,thu,fri,sat };
enum weekday a,b,c;
或者爲:
enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;
或者爲:
enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;
 

枚舉類型在使用中有以下規定:
1. 枚舉值是常量,不是變量。不能在程序中用賦值語句再對它賦值
2. 枚舉元素本身由系統定義了一個表示序號的數值,從 0 開始順序定義

typedef 定義的一般形式爲:
        typedef 原類型名 新類型名
其中原類型名中含有定義部分,新類型名一般用大寫表示,以便於區別。
有時也可用宏定義來代替 typedef 的功能,但是宏定義是由預處理完成的,而 typedef則是在編譯時完成的,後者更爲靈活方便。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章