最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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語言 - 指針的評論 (共 條)

分享到微博請遵守國家法律
蒙阴县| 德安县| 耒阳市| 淳安县| 巧家县| 东至县| 米脂县| 宁夏| 大余县| 蒙自县| 灵山县| 来凤县| 苍山县| 鄂托克前旗| 肇庆市| 龙门县| 绥芬河市| 黑山县| 会泽县| 铅山县| 北票市| 闵行区| 临颍县| 台中市| 林甸县| 准格尔旗| 宁安市| 乌兰浩特市| 博乐市| 苍南县| 乃东县| 全椒县| 辽宁省| 宣恩县| 涿州市| 盐津县| 富蕴县| 喜德县| 文登市| 西贡区| 襄樊市|