1 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
以上的程序和你的代碼完全等價(jià),設(shè)置四個(gè)斷點(diǎn)并調(diào)試,我稱前三個(gè)斷點(diǎn)為1,2,3,如圖。
print函數(shù)接受三個(gè)參數(shù),三個(gè)整形指針。在print(&a,&b,&c)這句話中分別傳入了a,b,c變量的地址,也就是指向a,b,c三個(gè)整型變量的指針。
進(jìn)而在print函數(shù)當(dāng)中
第一個(gè)斷點(diǎn): cout << ++*x<<','; 這句話中 ++*x 的優(yōu)先級(jí)是 * 高于 ++ 也就是 ++(*x)
那么,x所指的變量自增,所以x所指的變量變成了2。由于傳入的是指針,那么內(nèi)存當(dāng)中的數(shù)值也就變了,也就是說(shuō),main函數(shù)中a的值已經(jīng)變?yōu)榱?.
第二個(gè)斷點(diǎn) cout << ++*y<<','; 這句話與第一個(gè)類似,不解釋了
第三個(gè)斷點(diǎn) cout << *(z++)<<endl;
這句話得好好說(shuō)說(shuō)
這句話的意思是 先將指針z所指的變量取出并打印到屏幕上,然后再對(duì)z進(jìn)行自增。注意:此處z++,++自增符號(hào)在z的后方,說(shuō)明是先取出z之后再對(duì)其進(jìn)行自增操作。不要被括號(hào)所蒙蔽,認(rèn)為是先自增之后再取出變量了。而由于指針z的自增對(duì)z所指的變量沒(méi)有任何影響,所以c的值還是2,并沒(méi)有任何變化,不像a和b,他們的值已經(jīng)發(fā)生了變化。
我已經(jīng)完整解釋了第一個(gè)print函數(shù)的過(guò)程,你應(yīng)該也明白第二個(gè)print了吧
下面是整個(gè)的圖,給你貼出來(lái)
- 1 回答
- 0 關(guān)注
- 477 瀏覽
添加回答
舉報(bào)