2 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
char *aa[2] 這樣的聲明,aa 其實(shí)是數(shù)組。
聲明時(shí),標(biāo)識(shí)符后面跟著 [..] 就表示將標(biāo)識(shí)符聲明為數(shù)組,而標(biāo)識(shí)符前面的那些類型表示數(shù)組元素的類型。
那么這個(gè)聲明顯然聲明的是 aa 這個(gè)標(biāo)識(shí)符。aa 后面跟著中括號(hào),于是 aa 是數(shù)組。而聲明剩下的部分是 char *,這就作為 aa 數(shù)組的元素類型。所以 aa 是“含有兩個(gè) char 指針的數(shù)組”
等號(hào)右側(cè)的?{"abcd","ABCD"} 很顯然就是給數(shù)組初始化用的。這樣的初始化列表中的“東西”就(依次)作為相應(yīng)數(shù)組元素的初值。
別忘了 aa 數(shù)組的元素是 char 指針類型 。
假設(shè)我們暫時(shí)把第一個(gè)元素當(dāng)作 char *e0,那么其初始化相當(dāng)于這個(gè): char *e0 = "abcd"
還記得吧,字符串字面量相當(dāng)于字符數(shù)組,這樣把數(shù)組用作指針類型的初始的話,數(shù)組會(huì)隱式轉(zhuǎn)換為“指向數(shù)組首元素的指針”。也就是這里等號(hào)右側(cè) "abcd" 字符數(shù)組會(huì)轉(zhuǎn)換為指向這個(gè)串的第一個(gè)元素 'a' 的指針,那么這個(gè)指針就作為 e0 的初值了。最終 aa 數(shù)組的第 1 個(gè)元素(假稱的e0)的值就是指向這個(gè) "abcd" 字符數(shù)組的首地址。
同理,aa 的第 2 個(gè)元素就是指向 "ABCD" 的首地址。
- 2 回答
- 1 關(guān)注
- 1406 瀏覽
添加回答
舉報(bào)