一、結(jié)構(gòu) a)、結(jié)構(gòu)定義 一般形式: Struct 結(jié)構(gòu)名 { 類型名 成員名; }; Ex: Struct student { Int number; Char name[10]; Char sex; Int age; Char address[50]; Float score[3]; }; b)、結(jié)構(gòu)變量的定義 1、先定義結(jié)構(gòu)類型,再定義該類型數(shù)據(jù)。 Ex: Struct 結(jié)構(gòu)名 { 結(jié)構(gòu)成員表 }; Struct 結(jié)構(gòu)名 變量名列表; 2、在定義結(jié)構(gòu)類型的時(shí)候,同時(shí)定義若干個(gè)此類型的變量。 Ex: Struct 結(jié)構(gòu)名 { 結(jié)構(gòu)成員表 } 變量表; 3、不定義結(jié)構(gòu)類型標(biāo)識(shí)符(結(jié)構(gòu)名),直接定義結(jié)構(gòu)變量。 Ex: Struct { 結(jié)構(gòu)成員表 } 變量表; c)、結(jié)構(gòu)類型變量成員的引用 引用結(jié)構(gòu)變量x的成員有以下3種方法(p為結(jié)構(gòu)指針變量,指向x): 1、x.成員名 2、(*p).成員名 3、p->成員名 d)、Attention 1、結(jié)構(gòu)類型定義只是指定了一種類型,與int、float、char地位相同,無具 體 數(shù)據(jù),系統(tǒng)不分配內(nèi)存 2、結(jié)構(gòu)成員可以是任何基本數(shù)據(jù)類型,也可以是指針等。 3、結(jié)構(gòu)類型可以嵌套定義,但不能遞歸定義,即允許一個(gè)或多個(gè)成員類型 定 義為其他結(jié)構(gòu)類型。 Ex: Struct student { Int number; Char name[10]; Struct data birthday; //birthday成員的類型為結(jié)構(gòu) data 類型 } 二、枚舉 a)、對(duì)枚舉元素按常量處理,不能對(duì)它們賦值。(注意區(qū)分枚舉元素和枚舉變 量) Ex: Enum weekday{sum ,mon, tue, wed, thu, fri, sat}; Sum=0; //sum是枚舉元素,算常量,不能被賦值 b)、枚舉變量具有默認(rèn)值,它們依次為:0,1,2,3,。。。例如上例中sum的值 為0、mon為1. c)、也可以在聲明的時(shí)候另行定義枚舉元素的值 Ex: Enum weekday{sum=7 ,mon=1, tue, wed, thu, fri, sat}; d)、整數(shù)值不能直接賦給枚舉變量;如需將整數(shù)賦值給枚舉變量,應(yīng)進(jìn)行強(qiáng) 制類型轉(zhuǎn)換。 Ex: Weekday day; Day=(weekday)1; e)、枚舉變量的取值范圍只能是枚舉元素 三、typedef聲明 語法形式: typedef 已有類型名 新類型名表; 其中,新類型名表可以有多個(gè)標(biāo)識(shí)符,他們之間以逗號(hào)隔開。 Ex: Typedef double area, volume; Typedef int natural; Natural i1, i2; Area a; Volume v; 四、宏定義 a)、"\"與一個(gè)較長占多行的宏 宏定義中允許包含兩行以上命令的情形,此時(shí)必須在最右邊加上"\"且該行"\"后不能再有任何字符,連注釋部分都不能有,下面的每行最后的一定要是"\","\"后面加一個(gè)空格都會(huì)報(bào)錯(cuò),更不能跟注釋。 Ex: #define exchange(a,b) {\ int t;\ t=a;\ a=b;\ b=t;\ }
|