指標與指標變數

來源:互聯網
上載者:User

指標是C語言的精華部分,通過利用指標,我們能很好地利用記憶體資源,使其發揮最大的效率。有了指標技術,我們可以描述複雜的資料結構,對字串的處理可以更靈活,對數組的處理更方便,使程式的書寫簡潔,高效,清爽。但由於指標對初學者來說,難於理解和掌
握,需要一定的電腦硬體的知識做基礎,這就需要多做多練,多上機動手,才能在實踐中儘快掌握,成為C的高手。
過去,我們在編程中定義或說明變數,編譯系統就為已定義的變數分配相應的記憶體單元,也就是說,每個變數在記憶體會有固定的位置,有具體的地址。由於變數的資料類型不同,它所佔的記憶體單元數也不相同。若我們在程式中做定義為:
int a=1,b=2;
float x=3.4, y = 4 . 5 ;
double m=3.124;
char ch1='a', ch2='b';

讓我們先看一下編譯系統是怎樣為變數分配記憶體的。變數a,b是整型變數,在記憶體各佔2個位元組;x,y是實型,各佔4個位元組;m是雙精確度實型,佔8個位元組;ch1,ch2是字元型,各佔1個位元組。由於電腦記憶體是按位元組編址的,設變數的存放從記憶體2000單元開始存放,則編譯系統對變數在記憶體的安放情況為圖6-1所示。

變數在記憶體中按照資料類型的不同,占記憶體的大小也不同,都有具體的記憶體單元地址,如變數a在記憶體的地址是2000,佔據兩個位元組後,
變數b的記憶體位址就為2002,變數m的記憶體位址為2012等。對記憶體中變數的訪問,過去用scanf("%d%d%f",&a,&b,&x)表示將資料輸入變數的地址所指示的記憶體單元。那麼,訪問變數,首先應找到其在記憶體的地址,或者說,一個地址唯一指向一個記憶體變數,我們稱這個地址為
變數的指標。如果將變數的地址儲存在記憶體的特定地區,用變數來存放這些地址,這樣的變數就是指標變數,通過指標對所指向變數的訪問,也就是一種對變數的“間接訪問”。
設一組指標變數pa、pb、px、py、pm、pch1、pch2,分別指向上述的變數a、b、x、y、m、ch1、ch2,指標變數也同樣被存放在記憶體,二者的關係如圖6-2所示:

在圖6-2中,左部所示的記憶體存放了指標變數的值,該值給出的是所指變數的地址,通過該地址,就可以對右部描述的變數進行訪問。如指標變數pa的值為2000,是變數a在記憶體的地址。因此,pa就指向變數a。變數的地址就是指標,存放指標的變數就是指標變數。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。