門宇 梁拓 李銀琦
摘要:指針是C語言中廣泛使用的一種數(shù)據(jù)類型, 函數(shù)是構(gòu)成C語言程序的基本單位, 在C語言中, 將指針應(yīng)用于函數(shù)進(jìn)行程序設(shè)計(jì), 使函數(shù)的功能更加強(qiáng)大, 函數(shù)調(diào)用也更加靈活, 程序更加精練和高效。就C語言一維指針、二維指針、與辨析指針數(shù)組與數(shù)組指針討論。
關(guān)鍵詞:C語言; 指針; 結(jié)構(gòu);分析;
隨著現(xiàn)代技術(shù)的發(fā)展計(jì)算機(jī)行業(yè)越來越繁榮,而作為計(jì)算機(jī)標(biāo)志性工具的編程語言也被廣泛的應(yīng)用和開發(fā),其中C語言更是成為大學(xué)各個(gè)專業(yè)所常用做通識(shí)學(xué)習(xí)的一門語言。
C語言是結(jié)構(gòu)化的程序設(shè)計(jì)語言, C語言相對(duì)于大部分的語言來說可以對(duì)硬件底層進(jìn)行更深的操作,其中一部分就要?dú)w因于C語言的指針數(shù)據(jù)類型。
C語言的數(shù)據(jù)指針類型的使用靈活多變,可與其他數(shù)據(jù)結(jié)構(gòu)聯(lián)合使用,如數(shù)組、函數(shù)、結(jié)構(gòu)體等。而正確而靈活地運(yùn)用指針, 可以有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu), 方便地進(jìn)行字符串處理, 靈活地實(shí)現(xiàn)數(shù)組的應(yīng)用等一系列工作。所以C語言的指針是學(xué)習(xí)C語言的重要組成部分。
1 C語言常用的指針結(jié)構(gòu)
(1)一維指針變量。
(2) 二維指針內(nèi)存結(jié)構(gòu)。
(3) 指針數(shù)組與數(shù)組指針。
2 一維指針變量
一維指針變量?jī)?nèi)容是該變量類型普通變量?jī)?nèi)容的地址。
例:int*P,a=1;
*P=a;
int類型指針變量P的內(nèi)存結(jié)構(gòu)與int普通變量a的關(guān)系
圖中每個(gè)數(shù)據(jù)塊的前半部分是數(shù)據(jù)存儲(chǔ)的內(nèi)存地址,后半部分是內(nèi)存的內(nèi)容。
從圖中我們可以看到指針變量P中存儲(chǔ)了普通變量a的地址內(nèi)容。
用指針表示一個(gè)變量,不僅如此一維指針變量也可以表示一個(gè)一維數(shù)組。
例:int*P,a[5];
P=a;
圖中指針P中的內(nèi)容指向a中的數(shù)組第一個(gè)存儲(chǔ)空間的地址。而當(dāng)用指針對(duì)數(shù)組中數(shù)據(jù)查找時(shí)只需將“P+‘?dāng)?shù)組中要查找的數(shù)據(jù)所在的序號(hào)”,使用即可。
3 二維指針內(nèi)存結(jié)構(gòu)
二維指針是以線性方式表示一個(gè)數(shù)組塊。即用二維指針代替二維數(shù)組。
例:int**P,a[4][5];
P=a;
如圖中二維指針P指向*P,而*P中每一個(gè)內(nèi)容都會(huì)指向一個(gè)一維數(shù)組。
在內(nèi)存中二維數(shù)組就是以二維指針指向由一維指針組成的數(shù)組,而每一個(gè)一維指針都指向一個(gè)數(shù)組,這樣就構(gòu)成了一個(gè)二維數(shù)組。
4 指針數(shù)組與數(shù)組指針
指針數(shù)組即指針的數(shù)組,是一個(gè)一維數(shù)組但數(shù)組內(nèi)容中存儲(chǔ)的是指針變量的地址。
數(shù)組指針即數(shù)組的指針,它是一個(gè)指針是指向數(shù)組的一個(gè)指針。
例:
如圖中數(shù)組P就是一個(gè)指針數(shù)組,數(shù)組內(nèi)存放的是指針變量,而每個(gè)指針又指向數(shù)組,所以每個(gè)指針又稱數(shù)組指針。
5 結(jié)語
在C語言中使用指針可以進(jìn)行值傳遞,調(diào)用函數(shù),結(jié)構(gòu)體調(diào)用,使用指針也會(huì)提高程序的運(yùn)行效率,由于指針只存儲(chǔ)地址而不管其內(nèi)容是什么,所以后容易賦值、對(duì)函數(shù)調(diào)用,因此C語言具有很好的靈活性。
參考文獻(xiàn):
[1]譚浩強(qiáng).C語言程序設(shè)計(jì) (第3版) [M].清華大學(xué)出版社,2014.
[2]Stephen Prata.c primer plus (第6版) 中文版 [M].人民郵電大學(xué),2017.
[3] 涂玉芬.C語言指針在函數(shù)中的運(yùn)用[J].電腦與信息技術(shù),2019,27(01):69-71.