知識點(diǎn):
1.int 變量跟只包含一個int 成員的結(jié)構(gòu)變量,在傳遞參數(shù)的方式可能完全不同。一個 int參數(shù)一般會傳遞到寄存器中,而結(jié)構(gòu)參數(shù)很可能被傳遞到堆棧中。
2.在結(jié)構(gòu)中放置數(shù)組,可以講數(shù)組當(dāng)做第一等級類型,用賦值語句拷貝整個數(shù)組。
struct s_tag {int a[100];};
struct s_tag orange, lime;
int main()
{
int i;
for(i=0; i<100; i++) lime.a[i]=1;
orange=lime; //對整個結(jié)構(gòu)賦值
}
3.union
為了節(jié)省空間
為了把一個數(shù)據(jù)解釋為兩種不同的東西。
4.enum
#define定義的名字一般在編譯時期被丟棄,而枚舉名字則通常一直在調(diào)試器中可見。可以再調(diào)試代碼的時候看見他們。
5.typedef int x[10] 與 #define x int[10]區(qū)別
可以用其他類型說明符對宏類型名進(jìn)行擴(kuò)展
,但是不能對type的飯定義的類型名,進(jìn)行擴(kuò)展
#define peach int
unsigned peach i;//right
typedef int banana;
unsigned banana i;//error
在連續(xù)幾個變量聲明中,用typedef定義的類型能夠保證聲明中
所有變量均為同一種類型,但是#define定義的類型不能保證。
#define int_ptr int*;
int_ptr chalk, cheese;
結(jié)果:int * chalk, cheese;(他們兩個類型不同)
#typedef char* char_ptr
char_ptr ben, rool(兩個都是指向char的指針)
6. 不要為了方便對結(jié)構(gòu)使用typedef,雖然可以省去struct但是省去了提示信息。
用在數(shù)組,結(jié)構(gòu),指針,以及函數(shù)的組合類型。結(jié)構(gòu)標(biāo)簽可以添加“_tag”結(jié)尾。