指針的基礎(chǔ)演怎、
c語(yǔ)言中的指針,可以使程序簡(jiǎn)潔避乏,高效爷耀,緊湊。在計(jì)算機(jī)內(nèi)部存儲(chǔ)器中拍皮,沒(méi)一個(gè)字節(jié)單元都有一個(gè)編號(hào)歹叮,稱之為地址跑杭。這個(gè)地址就相當(dāng)于門牌號(hào)。
簡(jiǎn)單的說(shuō)指針就是一個(gè)地址咆耿。同樣稱之為指針變量德谅。
指針變量、
指針?biāo)皇腔绢愋腿荩且环N構(gòu)造類型窄做,一般形式為:
類型說(shuō)明符? 變量名;
其中“*”表示一個(gè)指針變量慰技,例如:
int *p椭盏;
以上代碼表示p是一個(gè)指針變量,它的值是某個(gè)整形變量的地址吻商,或者說(shuō)p指向一個(gè)整形變量掏颊。
static int? p1;//p1是指向靜態(tài)整形變量的指針變量艾帐。
folat p2乌叶;//p2是指向浮點(diǎn)類的指針變量。
char p3掩蛤;//p3是指向字符類型的指針變量枉昏。
指針變量的賦值、
變量的地址是由編譯系統(tǒng)分配的揍鸟,用戶不知道具體地址兄裂,在c語(yǔ)言中提供了地址運(yùn)算符“&”來(lái)表示變量的地址;
指針的運(yùn)算阳藻、
指針運(yùn)算時(shí)以指針變量所存放的值(地址量)作為運(yùn)算量而進(jìn)行的運(yùn)算晰奖,指針的運(yùn)算就是地址的計(jì)算。
指針的算術(shù)運(yùn)算腥泥、
運(yùn)算符???????????????? 計(jì)算公式????????????????????? 意義
+??????????????????????????? p+n???????????????? 指針向地址大的方向移動(dòng)n個(gè)數(shù)據(jù)
-???????????????????????????? p-n????????????????? 指針向地址小的方向移動(dòng)n個(gè)數(shù)據(jù)
++?????????????????????? p++或++p????????? 指針向地址大的方向移動(dòng)1個(gè)數(shù)據(jù)
--??????????????????????????p--或--p??????????? 指針向地址小的地方移動(dòng)1和數(shù)據(jù)
?-???????????????????????????? p-q???????????????? 兩個(gè)指針之間相隔數(shù)據(jù)元素的個(gè)數(shù)
注(不同數(shù)據(jù)類型的兩個(gè)指針實(shí)行加減乘除運(yùn)算是無(wú)意義的)匾南。
指針的關(guān)系運(yùn)算、
兩指針之間的關(guān)系運(yùn)算蛔外,表示它們指向的地址之間的關(guān)系運(yùn)算蛆楞。
運(yùn)算符???????? 說(shuō)明????????? 列子????????? 運(yùn)算符???????????? 說(shuō)明?????????? 列子
?? >???????????????大于????????? p>q??????????? <=??????????????? 小于等于????? p<=q
? <?????????????? 小于?????????? p<q????????????? !=??????????????????不等于??????? p!=q
?? >=?????????大于等于????? p>=q??????????? ==?????????????????? 等于?????????? p==q
空指針夹厌、
指的是指針變量存了零號(hào)地址豹爹。注(訪問(wèn)零號(hào)地址存儲(chǔ)的值或者修改其值,都是不允許的矛纹,運(yùn)行程序是臂聋,會(huì)出現(xiàn)下面情況:Segmentation? fault)
在對(duì)指針進(jìn)行間接引用前,應(yīng)該先判斷該該指針是都為NULL,這樣才不會(huì)出現(xiàn)錯(cuò)誤孩等。
const指針艾君、
修飾最近一個(gè)變量,變量一旦被修飾肄方,其值就不可能被改變冰垄。