java - c/c++ 指針指向 數(shù)組和數(shù)據(jù)類型 判斷時(shí)會(huì)不會(huì)有二義性?
問(wèn)題描述
int dd=1;int *a=ⅆ // 1int *c=new int[2]; //2這里1說(shuō)明a是int 類型的指針,2說(shuō)明c是int數(shù)組類型的指針.對(duì)不?這段數(shù)據(jù)結(jié)構(gòu)代碼
兩個(gè)理解:1.rowlist是個(gè)動(dòng)態(tài)數(shù)組指向一大塊內(nèi)存,數(shù)組里的元素存儲(chǔ)著指向LinkList<int>鏈表的地址。即rowlist是指針數(shù)組。如圖一
2.rowlist指向一個(gè)內(nèi)存,這個(gè)內(nèi)存存儲(chǔ)著<LinkList< int > * >類型的指針,即rowlist是指針的指針。如圖二
感覺(jué)兩個(gè)都可以,是要看具體實(shí)現(xiàn)嗎。比如rowlist=new ...是采用第一種?
問(wèn)題解答
回答1:int dd=1;int *a=ⅆ // 1int *c=new int[2]; //2
題主說(shuō):
這里1說(shuō)明a是int 類型的指針,2說(shuō)明c是int數(shù)組類型的指針.對(duì)不?
并不是這樣的,a和c其實(shí)是同一個(gè)東西,他們是指向int的指針。c并不是“int數(shù)組類型的指針”。
為什么c本來(lái)是一個(gè)int指針,但實(shí)際上它卻可以指向一個(gè)int數(shù)組呢?因?yàn)閕nt數(shù)組賦值給int指針的時(shí)候,C語(yǔ)言偷偷把它(int數(shù)組)轉(zhuǎn)換成了該int數(shù)組的首元素,這個(gè)“偷偷轉(zhuǎn)換”的專業(yè)名詞叫“隱式轉(zhuǎn)換”。
所以總結(jié)一下:
變量c不是int數(shù)組類型的指針,而是int類型的指針;
那為什么變量c竟然可以指向int數(shù)組呢,是因?yàn)槠渲邪l(fā)生了隱式轉(zhuǎn)換;
回答2:int *c=new int[2]; //2
c就是指向int的指針。指向數(shù)組的指針應(yīng)該寫成
int (*c)[2]=new int[2];
指針+1 會(huì)走幾個(gè)字節(jié)呢?試一試。
相關(guān)文章:
1. 開(kāi)了mc服務(wù)器但是不會(huì)全服同步數(shù)據(jù)2. php自學(xué)從哪里開(kāi)始?3. PHP單例模式4. 導(dǎo)入數(shù)據(jù)庫(kù)不成功5. 老師 我是一個(gè)沒(méi)有學(xué)過(guò)php語(yǔ)言的準(zhǔn)畢業(yè)生 我希望您能幫我一下6. Thinkphp 下載地址找不到了?7. index.php錯(cuò)誤,求指點(diǎn)8. nginx 504 Gateway Time-out 請(qǐng)問(wèn)如何設(shè)置9. 在cmd下進(jìn)入mysql數(shù)據(jù)庫(kù),可以輸入中文,但是查看表信息,不顯示中文,是怎么回事,怎新手,請(qǐng)老師10. mysql如何配置遠(yuǎn)程php外網(wǎng)鏈接數(shù)據(jù)庫(kù)
