五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

計算機程序基礎教程(10):C語言 - 指針

2023-03-09 00:33 作者:阿貍喜羊羊  | 我要投稿


【指針基礎】


C語言使用數(shù)據(jù)名調(diào)用數(shù)據(jù),數(shù)據(jù)名無法實現(xiàn)匯編中的間接內(nèi)存尋址,為此C語言提供了指針功能,指針本身是一個數(shù)值數(shù)據(jù),用于存儲另一個數(shù)據(jù)的地址,從而實現(xiàn)數(shù)據(jù)的間接尋址,使用指針調(diào)用不同地址、不同數(shù)據(jù)時,調(diào)用數(shù)據(jù)的代碼無需修改,只需要修改指針的值即可。


指針也稱為指針變量,在32位程序中,指針變量是一個無符號4字節(jié)整數(shù),在64位程序中,指針變量是一個無符號8字節(jié)整數(shù)。


指針有類型之分,其存儲哪種類型數(shù)據(jù)的地址就屬于哪種類型的指針,編譯器通過指針類型確定要操作多少內(nèi)存地址,比如int類型指針操作4個內(nèi)存地址。

定義指針變量時首先指定指針類型,之后編寫*符號表示這是一個指針變量,賦值時使用&符號提取一個數(shù)據(jù)的地址。

使用指針變量時,在指針變量名前添加*符號,表示調(diào)用指針指向的數(shù)據(jù),而非指針變量本身。



?● 多重指針


指針變量本身還可以被另一個指針存儲,相當于多層間接尋址。


int ** a;? ? //指針的指針

int *** b;? ?//三重指針



?● 指針作為數(shù)組元素



二維數(shù)組作為參數(shù)時,編譯器自動轉(zhuǎn)換為指針,同一維數(shù)組。



也可以使用雙重指針代替二維數(shù)組當做參數(shù)。



?● 指針作為參數(shù)



?● 指針作為返回值





【數(shù)組指針】


數(shù)組指針為數(shù)組第一個元素的指針,第一個元素的地址就是數(shù)組的地址。





【結(jié)構體指針】


使用指針調(diào)用結(jié)構體成員有兩種方式:

1.指針名->成員名。

2.(*指針名).成員名。





【共用體指針】





【函數(shù)指針】


函數(shù)指針存儲一個函數(shù)的地址,定義函數(shù)指針比較復雜,首先指定返回值類型,之后編寫一個()符號,內(nèi)部設置指針名,以*號開頭,之后編寫第二個()符號,內(nèi)部設置參數(shù)類型,為函數(shù)指針賦值直接編寫函數(shù)名即可。




函數(shù)指針作為參數(shù)





【指針運算】


指針變量可以進行數(shù)學運算,不同類型的指針運算結(jié)果不同。

  • 變量指針+1,指針本身增加變量的長度,比如int指針+1等于指針值+4,定位到下一個int數(shù)據(jù),short指針+1等于指針值+2。

  • 數(shù)組指針+1,指針本身增加數(shù)組元素的長度,定位到數(shù)組下一個元素。

  • 結(jié)構體指針+1,指針本身增加結(jié)構體的長度,注意結(jié)構體長度并非所有成員長度的總和,需要額外計算地址對齊占用的存儲空間。

  • 函數(shù)指針,不支持數(shù)學運算。




兩個類型相同的指針之間可以進行減法運算,表示計算兩個指針記錄的地址之間存儲了多少個數(shù)據(jù)。





【指針類型轉(zhuǎn)換】


指針類型可以轉(zhuǎn)換,編譯器將按照轉(zhuǎn)換后的類型操作內(nèi)存地址。



指針類型可以定義為void,表示空類型,空類型指針可以存儲任何數(shù)據(jù)的地址,也可以轉(zhuǎn)換為任何類型的指針。

當你需要接收一個指針,但又不確定它的類型時,可以定義一個空類型指針接收它,之后轉(zhuǎn)換為具體的類型再使用。




計算機程序基礎教程(10):C語言 - 指針的評論 (共 條)

分享到微博請遵守國家法律
桐柏县| 尼勒克县| 南召县| 馆陶县| 拉萨市| 扎囊县| 黑山县| 苏尼特左旗| 南木林县| 德格县| 奉节县| 甘德县| 万山特区| 朝阳县| 凤山市| 铁岭市| 银川市| 清远市| 砚山县| 靖西县| 龙海市| 布拖县| 修水县| 太和县| 昭平县| 定结县| 连云港市| 安吉县| 大宁县| 荔浦县| 翼城县| 梧州市| 德江县| 垣曲县| 浙江省| 肇东市| 香港 | 九寨沟县| 罗江县| 台安县| 南雄市|