C和指針:對數(shù)組的學(xué)習(xí)記錄
[導(dǎo)讀]1.12[arry]? = *(arry + 2) = arry[2]1.2下標(biāo)絕不會比指針更有效率,但指針有時(shí)會比下標(biāo)有效。結(jié)論:? ? 1.當(dāng)根據(jù)某個決定數(shù)目的增量在一個數(shù)組中移動的時(shí)候,使用指針
1.1
2[arry]? = *(arry + 2) = arry[2]
1.2
下標(biāo)絕不會比指針更有效率,但指針有時(shí)會比下標(biāo)有效。
結(jié)論:
? ? 1.當(dāng)根據(jù)某個決定數(shù)目的增量在一個數(shù)組中移動的時(shí)候,使用指針比使用下標(biāo)產(chǎn)生效率更高的代碼。當(dāng)這個增量是1并且機(jī)器具有地址自動增量模型時(shí),這點(diǎn)表現(xiàn)更突出。
? ? 2.聲明為寄存器變量的指針通常比位于靜態(tài)內(nèi)存和堆棧中的指針效率更高。
? ? 3.如果可以通過測試一些已經(jīng)初始化并經(jīng)過調(diào)整的內(nèi)容來判斷循環(huán)是否應(yīng)該終止,就不需要使用單獨(dú)的計(jì)數(shù)器。
? ? 4.那些必須在運(yùn)行時(shí)求值的表達(dá)式較之諸如&arry[SIZE]或(arry + SIZE)這樣的常量表達(dá)式往往代價(jià)更高。
1.3
傳址調(diào)用是通過傳遞一個指向所需元素的指針來實(shí)現(xiàn)的,函數(shù)得到的是該指針的拷貝。
void?strcpy(?char?*bugger,?char?const?*string) { ????while(?(*buffer++?=?*string++)?!=?'