C語(yǔ)言—指針計(jì)算方式

時(shí)間:2022-04-15 08:45:00

導(dǎo)語(yǔ):C語(yǔ)言—指針計(jì)算方式一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

C語(yǔ)言—指針計(jì)算方式

1C語(yǔ)言是目前世界上使用最為廣泛的計(jì)算機(jī)語(yǔ)言之一,目前已經(jīng)成為各大高校主要的計(jì)算機(jī)教學(xué)語(yǔ)言。指針算法是C語(yǔ)言中的一個(gè)非常重要的概念,由于指針?biāo)惴ǜ拍畋容^復(fù)雜,運(yùn)用非常靈活,比較難掌握,尤其是對(duì)初次涉及計(jì)算機(jī)語(yǔ)言的學(xué)生來(lái)說(shuō)更是如此。本文重點(diǎn)分析C語(yǔ)言指針?biāo)惴▎卧虒W(xué)中的幾個(gè)關(guān)鍵點(diǎn),并探討C語(yǔ)言教學(xué)中應(yīng)該注意的一些問(wèn)題。指針?biāo)惴ㄖR(shí)單元構(gòu)成

1.1指針?biāo)惴ǘx在計(jì)算機(jī)內(nèi)存中,每一個(gè)存儲(chǔ)單元(通常為1字節(jié))都有一個(gè)固定的編號(hào),就像酒店中的房間號(hào)碼一樣,這個(gè)編號(hào)就稱為地址,相當(dāng)于房間號(hào)。在地址所標(biāo)識(shí)的內(nèi)存單元中存放數(shù)據(jù),這就相當(dāng)于酒店中各個(gè)房間里居住的旅客一樣。

1.2引用指針?biāo)惴ㄗ兞?amp;和*是C語(yǔ)言有關(guān)指針?biāo)惴ǖ膬蓚€(gè)重要運(yùn)算符,分別是取地址運(yùn)算符和指針?biāo)惴ㄟ\(yùn)算符。例如:&x為變量x的地址,*p為指針?biāo)惴ㄗ兞縫所指向的存儲(chǔ)單元。應(yīng)該注意的是在定義時(shí)*只起說(shuō)明作用,不是運(yùn)算符。比如下面的語(yǔ)句中:floatx=1.5float*P=&xfloat*P=x很多同學(xué)在這里有些迷惑,到底是第2條語(yǔ)句正確還是第3條語(yǔ)句正確呢?根據(jù)指針?biāo)惴ǖ亩x很顯然第2條語(yǔ)句是正確的。迷惑的原因就在把*當(dāng)成了運(yùn)算符。其實(shí),這里的float*共同來(lái)修飾P,定義一個(gè)指向浮點(diǎn)型的指針?biāo)惴ㄗ兞?,同時(shí)要將一個(gè)指針?biāo)惴?amp;x賦值給P。為了方便對(duì)存儲(chǔ)單元進(jìn)行控制,我們可以設(shè)置某些變量專門存放指針?biāo)惴?這樣的變量稱為指針?biāo)惴ㄗ兞俊T谡n堂教學(xué)中,應(yīng)注意使學(xué)生明白內(nèi)存單元地址與內(nèi)存單元內(nèi)容這兩個(gè)概念的區(qū)別,很多初學(xué)者在這個(gè)概念問(wèn)題上常常弄混淆。

1.3指針?biāo)惴ㄅc數(shù)組

1.3.1指針?biāo)惴ㄅc數(shù)組區(qū)別。在C語(yǔ)言中數(shù)組與指針?biāo)惴ǖ年P(guān)系非常密切,但它們還是有著本質(zhì)上的區(qū)別。指針?biāo)惴梢噪S時(shí)指向任意類型的內(nèi)存單元,它的特征是可變。所以我們常用指針?biāo)惴▉?lái)操作動(dòng)態(tài)內(nèi)存。當(dāng)數(shù)組作為函數(shù)的參數(shù)進(jìn)行傳遞時(shí),該數(shù)組自動(dòng)退化為同類型的指針?biāo)惴?。例?charx[]=chinachar*p=china上述兩個(gè)變量的內(nèi)存布局情況是:數(shù)組x需要在內(nèi)存中占用6個(gè)字節(jié)的空間。這段內(nèi)存區(qū)通過(guò)數(shù)組名x來(lái)標(biāo)志。指針?biāo)惴≒則需要4個(gè)字節(jié)的空間來(lái)存放地址,這4個(gè)字節(jié)用P來(lái)標(biāo)志。其中存放的地址幾乎可以指向任何地方,也可以哪里都不指。目前這個(gè)P指向某地連續(xù)的6個(gè)字節(jié)即字符串china。在教學(xué)過(guò)程中應(yīng)該注意使學(xué)生能夠正確認(rèn)識(shí)數(shù)組與指針?biāo)惴ǖ膮^(qū)別,并正確運(yùn)用它們。

1.3.2數(shù)組指針?biāo)惴?。?shù)組指針?biāo)惴ǖ膶?shí)質(zhì)是指針?biāo)惴?其定義為:int(*p)[n]表示P為指向由n個(gè)元素組成的一維數(shù)組的指針?biāo)惴ㄗ兞?。假設(shè)對(duì)于一個(gè)二維數(shù)組a[2][3],定義一個(gè)指向它的數(shù)組指針?biāo)惴≒,程序如下:inta[2][3]={{l,2,3},{4,5,6}}int(*p)[3]P=aprintf(%d,(*p)[1])p++printf(%d,(*p)[1])在該程序中,初始化數(shù)組指針?biāo)惴≒指向數(shù)組a的首地址,即指向二維數(shù)組的首行,此時(shí),輸出這一行的第1個(gè)元素,即(*p)[1]=2接著,P往下移動(dòng)一個(gè)數(shù)組的寬度,即指向二維數(shù)組的第二行,輸出這一行的第1個(gè)元素,即(*p)[1]=5。