167. 聯(lián)合是一種數(shù)據(jù)類型,它能夠在同意內(nèi)存里面存儲(chǔ)不同的數(shù)據(jù)類型。聲明一個(gè)聯(lián)合類型的變量時(shí),編譯器會(huì)分配足夠的空間,以便能夠存儲(chǔ)聯(lián)合聲明中占用字節(jié)最大的類型。聯(lián)合的初始化方法有三種:把一個(gè)聯(lián)合初始化為另一個(gè)同類型的聯(lián)合;初始化聯(lián)合的第一個(gè)元素;根據(jù)C99標(biāo)準(zhǔn),使用指定初始化器。在聯(lián)合中,一次只存儲(chǔ)一個(gè)值。即使有充足的空間,也不能同時(shí)存儲(chǔ)兩個(gè)及兩個(gè)以上的的值。
168. 可以利用枚舉類型聲明符號(hào)名稱來表示整型常量,使用enum關(guān)鍵字,可以創(chuàng)建一個(gè)新“類型”并指定它可具有的值。枚舉中的每一個(gè)符號(hào)常量,被稱為枚舉符。
169. 雖然枚舉符是int類型,但是枚舉變量可以是任意整數(shù)類型,前提是該整數(shù)類型可以存儲(chǔ)枚舉常量。需要注意的是,C枚舉的一些特性并不適用于C++。比如,C允許變量使用++運(yùn)算符,但是C++標(biāo)準(zhǔn)不允許。
170. 默認(rèn)情況下,枚舉列表中的常量被賦予0、1、2等。在聲明時(shí),也可以為枚舉常量指定整數(shù)值。如果只對(duì)一個(gè)枚舉常量賦值,那么后續(xù)的枚舉常量會(huì)被依次遞增賦值。
171. C語言使用名稱空間標(biāo)識(shí)程序中的各部分,即通過名稱來識(shí)別。作用域是名稱空間概念的一部分:兩個(gè)不同作用域的同名變量不沖突。兩個(gè)相同作用域的同名變量沖突。名稱空間是分類別的。在特定作用域中的結(jié)構(gòu)標(biāo)記、聯(lián)合標(biāo)記和枚舉標(biāo)記都共享相同的名稱空間,該名稱空間與普通變量使用的空間不同。這意味著在相同作用域中變量和標(biāo)記的名稱可以相同,不會(huì)引起沖突,但不能在相同作用域中聲明兩個(gè)同名標(biāo)簽或同名變量。但是在C++中不允許這么做,因?yàn)樗褬?biāo)記名和變量名放在相同的名稱空間中。
172. typedef創(chuàng)建的符號(hào)名只受限于類型,不能用于值。typedef由編譯器解釋,不是預(yù)處理器。