C++ 教程
指針和數(shù)組是密切相關(guān)的。事實(shí)上,指針和數(shù)組在很多情況下是可以互換的。例如,一個(gè)指向數(shù)組開(kāi)頭的指針,可以通過(guò)使用指針的算術(shù)運(yùn)算或數(shù)組索引來(lái)訪問(wèn)數(shù)組。請(qǐng)看下面的程序:
當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:
var[0]的內(nèi)存地址為 0x7fff59707adc var[0] 的值為 10 var[1]的內(nèi)存地址為 0x7fff59707ae0 var[1] 的值為 100 var[2]的內(nèi)存地址為 0x7fff59707ae4 var[2] 的值為 200
然而,指針和數(shù)組并不是完全互換的。例如,請(qǐng)看下面的程序:
把指針運(yùn)算符 * 應(yīng)用到 var 上是完全可以的,但修改 var 的值是非法的。這是因?yàn)?var 是一個(gè)指向數(shù)組開(kāi)頭的常量,不能作為左值。
由于一個(gè)數(shù)組名對(duì)應(yīng)一個(gè)指針常量,只要不改變數(shù)組的值,仍然可以用指針形式的表達(dá)式。例如,下面是一個(gè)有效的語(yǔ)句,把 var[2] 賦值為 500:
*(var + 2) = 500;
上面的語(yǔ)句是有效的,且能成功編譯,因?yàn)?var 未改變。
其他擴(kuò)展