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