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