167. 聯(lián)合是一種數(shù)據(jù)類型,它能夠在同意內(nèi)存里面存儲不同的數(shù)據(jù)類型。聲明一個聯(lián)合類型的變量時杆兵,編譯器會分配足夠的空間,以便能夠存儲聯(lián)合聲明中占用字節(jié)最大的類型仔夺。聯(lián)合的初始化方法有三種:把一個聯(lián)合初始化為另一個同類型的聯(lián)合琐脏;初始化聯(lián)合的第一個元素;根據(jù)C99標(biāo)準(zhǔn),使用指定初始化器日裙。在聯(lián)合中吹艇,一次只存儲一個值。即使有充足的空間昂拂,也不能同時存儲兩個及兩個以上的的值受神。
168. 可以利用枚舉類型聲明符號名稱來表示整型常量,使用enum關(guān)鍵字格侯,可以創(chuàng)建一個新“類型”并指定它可具有的值鼻听。枚舉中的每一個符號常量,被稱為枚舉符联四。
169. 雖然枚舉符是int類型撑碴,但是枚舉變量可以是任意整數(shù)類型,前提是該整數(shù)類型可以存儲枚舉常量朝墩。需要注意的是醉拓,C枚舉的一些特性并不適用于C++。比如收苏,C允許變量使用++運算符亿卤,但是C++標(biāo)準(zhǔn)不允許。
170. 默認(rèn)情況下鹿霸,枚舉列表中的常量被賦予0排吴、1、2等懦鼠。在聲明時傍念,也可以為枚舉常量指定整數(shù)值。如果只對一個枚舉常量賦值葛闷,那么后續(xù)的枚舉常量會被依次遞增賦值憋槐。
171. C語言使用名稱空間標(biāo)識程序中的各部分,即通過名稱來識別淑趾。作用域是名稱空間概念的一部分:兩個不同作用域的同名變量不沖突阳仔。兩個相同作用域的同名變量沖突。名稱空間是分類別的扣泊。在特定作用域中的結(jié)構(gòu)標(biāo)記近范、聯(lián)合標(biāo)記和枚舉標(biāo)記都共享相同的名稱空間,該名稱空間與普通變量使用的空間不同延蟹。這意味著在相同作用域中變量和標(biāo)記的名稱可以相同评矩,不會引起沖突,但不能在相同作用域中聲明兩個同名標(biāo)簽或同名變量阱飘。但是在C++中不允許這么做斥杜,因為它把標(biāo)記名和變量名放在相同的名稱空間中虱颗。
172. typedef創(chuàng)建的符號名只受限于類型,不能用于值蔗喂。typedef由編譯器解釋忘渔,不是預(yù)處理器。