C語(yǔ)言精要總結(jié)-指針系列(二)

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

 

此文為指針系列第二篇:

C語(yǔ)言精要總結(jié)-指針系列(一)

C語(yǔ)言精要總結(jié)-指針系列(二)

指針運(yùn)算

前面提到過(guò)指針的解引用運(yùn)算,除此之外,指針還能進(jìn)行部分算數(shù)運(yùn)算、關(guān)系運(yùn)算

指針能進(jìn)行的有意義的算術(shù)運(yùn)算包括加減法運(yùn)算,但不包括乘除運(yùn)算。并且運(yùn)算存在諸多限制。

加法運(yùn)算

指針加法運(yùn)算只適合指針與整數(shù),不能用在指針與指針。

指針加上或者減去一個(gè)整數(shù)n,是存儲(chǔ)的地址值加上或者減去n*指針指向類(lèi)型的空間大小。也就是

結(jié)果指針 = 指針 ±  n * 指針指向類(lèi)型空間大小。

例如int類(lèi)型的整數(shù)指針+1,運(yùn)算結(jié)果依然是一個(gè)整型指針,其存儲(chǔ)的地址值為原指針值+1*4,這是因?yàn)檎妥兞空加?個(gè)字節(jié)的空間。這個(gè)計(jì)算結(jié)果,恰好在當(dāng)前指針指向基礎(chǔ)上,向下偏移指向下一個(gè)相同類(lèi)型的空間。如下圖

 大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團(tuán)訓(xùn)

指針與整數(shù)的加減法一般用在迭代連續(xù)的內(nèi)存空間-數(shù)組,如果運(yùn)算得到的指針指向第一個(gè)元素之前或者最后一個(gè)元素之后,可能會(huì)產(chǎn)生非法讀寫(xiě)內(nèi)存中斷,就像引用一個(gè)未初始化的指針一樣不可預(yù)知。

指針除了可以與整數(shù)做加減運(yùn)算,連個(gè)指針之間還可以做減法運(yùn)算(不能做加法運(yùn)算)且必須是同類(lèi)型的指針。運(yùn)算結(jié)果為兩個(gè)指針指向地址之間,可以存放多少此類(lèi)型的變量數(shù)(或其相反數(shù)),類(lèi)型為ptrdiif_t類(lèi)型(一種有符號(hào)整數(shù)類(lèi)型)。

        		

網(wǎng)友評(píng)論