淺談指標 (轉)
此文僅適合初學C語言的朋友,凡是學了幾個月以上的不要對此文內容嗤之以鼻。:namespace prefix = o ns = "urn:schemas--com::office" />
C語言最具特色的是什麼?指標。這個答案好像是公論,無論高手還是低手,菜鳥還是老鳥,學過的還是沒學過的,但凡是聽說過C的,都能回答出來。正是因為C引入了指標的概念,使得他是最接近機器真實模型的高階語言,以至於得到了“中級語言”的稱號;象我這樣有時候比C用的還多的人體會的更深——微控制器,我只會彙編,雖然現在開始學C,還是覺得怪怪的。
因此,指標是學習C必須掌握的,如果你畏懼它,不如換一門沒有指標的語言。下面有個小例子,希望你能從中得到一些啟發。
#include
void main()
{
int a = 10000;/*-------1*/
int* p, d;/*--------------2*/
p = &d;/*---------------3*/
p = (int*)a;/*-----------4*/
printf("%d %d", a, *p);
}
我來簡單講解一下:
是這樣寫int *p好還是這樣寫int* p好?
這兩種用法都是可以的,並且每種寫法都有擁護者。指標運算子是向右結合的,如果你象2語句那樣寫,實際上d還是int型別,而不是指標型別,贊成int *p寫法的,就是出於這個原因。你說我把int*用括號括起來不就行了,但是會把這樣的寫法當成是型別轉換,而不是型別定義。贊成int* p寫法的,原因就是直觀,很清晰的表示p是個整型的指標。例如這樣的寫法int* p = &a;換成int *p = &a;就很讓人費解。為了避免象2語句的誤解,有個規則就是,一行只定義一個指標。
具體怎樣寫,要看個人習慣,每種寫法人們都是認可的。
指標的危險性
指標實際上就是一個存有地址的變數,用指標訪問就相當於間接定址。很顯然,你可以給指標賦不同的數值,這樣就能訪問任意的記憶體——太危險了,例如4語句。在16位中,你對這種使用毫無辦法。幸運的是,在32位系統中,這種使用被禁止了。
指標的型別
你說指標不就是一個存有記憶體地址的變數嗎,既然都是“記憶體地址”型別,幹什麼還要型別啊。但是需要注意的是,當你從指標還原的時候,它指向的那塊記憶體,究竟是按照整型來用啊還是別的什麼結構?從這個角度來說,當你很清楚指標指向的記憶體的內容,做指標型別變換也是允許的。
關於指標,每本C語言書籍都有很詳細的介紹,我就不再多說了。當你粗淺的瞭解彙編的時候,相信你會對指標有更深刻的理解。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-956765/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 函式指標淺談 (轉)函式指標
- 【原創】淺談指標(一)指標
- 【原創】淺談指標(二)指標
- 【原創】淺談指標(三)指標
- 【原創】淺談指標(四)指標
- 淺談Orabbix監控指標指標
- 淺談Object Pascal的指標Object指標
- 【原創】淺談指標(十三)指向陣列的指標指標陣列
- 【原創】淺談指標(十一)alloca函式指標函式
- 【原創】淺談指標(十二)關於static(上)指標
- 【原創】淺談指標(九)二維陣列和多級指標相關指標陣列
- 【原創】淺談指標(七)字串相關(詳細版本)與指標運算指標字串
- Object Pascal:從物件指標談起 (轉)Object物件指標
- 【原創】淺談指標(八)字串相關函式(下集)指標字串函式
- 【原創】淺談指標(十)連結串列的寫法指標
- 淺談電商搜尋資料指標體系建設指標
- 淺談C++指標直接呼叫類成員函式C++指標函式
- 指標 (轉)指標
- 淺談script標籤
- 淺談國外工程專案的投標工作(轉)
- CR指標(轉載)指標
- ERP經驗談:規劃時如何定義指標(轉)指標
- 指標問題的一點體會(區別 [指向指標的指標] 與 [指標的指標] .) (轉)指標
- C++指標轉換C++指標
- 人氣指標(轉載)指標
- 隨機指標(轉載)隨機指標
- 我眼中的指標 (轉)指標
- 改變滑鼠指標 (轉)指標
- SMART POINTER(智慧指標) (轉)指標
- 淺談微服務轉型微服務
- 淺談 URI 及其轉義
- 淺談php web安全 【轉】PHPWeb
- 淺談人工智慧 (轉)人工智慧
- 顏色模型淺談 (轉)模型
- NULL 指標、零指標、野指標Null指標
- 淺談對標記永久化的理解
- 從幾個指標談windows記憶體指標Windows記憶體
- 布林線指標(轉載)指標