C語言—指針計算方式
時間:2022-04-15 08:45:00
導語:C語言—指針計算方式一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
1C語言是目前世界上使用最為廣泛的計算機語言之一,目前已經(jīng)成為各大高校主要的計算機教學語言。指針算法是C語言中的一個非常重要的概念,由于指針算法概念比較復雜,運用非常靈活,比較難掌握,尤其是對初次涉及計算機語言的學生來說更是如此。本文重點分析C語言指針算法單元教學中的幾個關(guān)鍵點,并探討C語言教學中應(yīng)該注意的一些問題。指針算法知識單元構(gòu)成
1.1指針算法定義在計算機內(nèi)存中,每一個存儲單元(通常為1字節(jié))都有一個固定的編號,就像酒店中的房間號碼一樣,這個編號就稱為地址,相當于房間號。在地址所標識的內(nèi)存單元中存放數(shù)據(jù),這就相當于酒店中各個房間里居住的旅客一樣。
1.2引用指針算法變量&和*是C語言有關(guān)指針算法的兩個重要運算符,分別是取地址運算符和指針算法運算符。例如:&x為變量x的地址,*p為指針算法變量p所指向的存儲單元。應(yīng)該注意的是在定義時*只起說明作用,不是運算符。比如下面的語句中:floatx=1.5float*P=&xfloat*P=x很多同學在這里有些迷惑,到底是第2條語句正確還是第3條語句正確呢?根據(jù)指針算法的定義很顯然第2條語句是正確的。迷惑的原因就在把*當成了運算符。其實,這里的float*共同來修飾P,定義一個指向浮點型的指針算法變量,同時要將一個指針算法&x賦值給P。為了方便對存儲單元進行控制,我們可以設(shè)置某些變量專門存放指針算法,這樣的變量稱為指針算法變量。在課堂教學中,應(yīng)注意使學生明白內(nèi)存單元地址與內(nèi)存單元內(nèi)容這兩個概念的區(qū)別,很多初學者在這個概念問題上常常弄混淆。
1.3指針算法與數(shù)組
1.3.1指針算法與數(shù)組區(qū)別。在C語言中數(shù)組與指針算法的關(guān)系非常密切,但它們還是有著本質(zhì)上的區(qū)別。指針算法可以隨時指向任意類型的內(nèi)存單元,它的特征是可變。所以我們常用指針算法來操作動態(tài)內(nèi)存。當數(shù)組作為函數(shù)的參數(shù)進行傳遞時,該數(shù)組自動退化為同類型的指針算法。例如:charx[]=chinachar*p=china上述兩個變量的內(nèi)存布局情況是:數(shù)組x需要在內(nèi)存中占用6個字節(jié)的空間。這段內(nèi)存區(qū)通過數(shù)組名x來標志。指針算法P則需要4個字節(jié)的空間來存放地址,這4個字節(jié)用P來標志。其中存放的地址幾乎可以指向任何地方,也可以哪里都不指。目前這個P指向某地連續(xù)的6個字節(jié)即字符串china。在教學過程中應(yīng)該注意使學生能夠正確認識數(shù)組與指針算法的區(qū)別,并正確運用它們。
1.3.2數(shù)組指針算法。數(shù)組指針算法的實質(zhì)是指針算法,其定義為:int(*p)[n]表示P為指向由n個元素組成的一維數(shù)組的指針算法變量。假設(shè)對于一個二維數(shù)組a[2][3],定義一個指向它的數(shù)組指針算法P,程序如下:inta[2][3]={{l,2,3},{4,5,6}}int(*p)[3]P=aprintf(%d,(*p)[1])p++printf(%d,(*p)[1])在該程序中,初始化數(shù)組指針算法P指向數(shù)組a的首地址,即指向二維數(shù)組的首行,此時,輸出這一行的第1個元素,即(*p)[1]=2接著,P往下移動一個數(shù)組的寬度,即指向二維數(shù)組的第二行,輸出這一行的第1個元素,即(*p)[1]=5。