C語言 變量的訪問方式
對變量的訪問實(shí)際上要轉(zhuǎn)換為對內(nèi)存地址的訪問。C語言中對變量的訪問有兩種形式,直接訪問方式和間接訪問方式。
以下面這個(gè)程序?yàn)槔榻B這兩種訪問方式:
main()
{
int x;
scanf("%d",&x);
printf("%d",x);
}
(1)直接訪問:直接利用變量名檢索得到變量的地址,對變量進(jìn)行存取。
上例中scanf("%du,&x)的執(zhí)行過程是這樣的:用變量名x去檢索內(nèi)存分配表,查找變量x所在的內(nèi)存地址(假設(shè)為4000 )。找到后,將從鍵盤上輸入的值(如20 )送入到變量x的起始地址4000中。此時(shí),變置x在內(nèi)存中的地址和值如圖所示。
(2)間接訪問:通過另一變量訪問該變量的值。
間接訪問一個(gè)變量可以描述為這樣一個(gè)過程:李四想去張三的家里找張三,但他不知道張三家住在哪里。不過王五知道,李四可以打電話給王五,得到張三家的地址后,再去張三家找到張三。
再比如,張三告訴李四,請你從我的第一個(gè)抽屜中找一份資料,但是要打開第一個(gè)抽屜,必須從第二個(gè)抽屜中找到鑰匙。
這兩個(gè)例子都是表明這樣一種情況:一個(gè)變量p中存儲著另外一個(gè)變量x的地址,要訪問變量x,必須先訪問變量P。
C語言規(guī)定,在程序中可以定義一種特殊的變量(稱為指針變量),用來存放其他變量的地址。
例如上例中,就可以定義一個(gè)指針變量p存儲變量x的地址,p與x的關(guān)系如圖所示。
3000 | 4000 | 變量X | 20 | |
p | X | i | ||
4000 | 20 | |||
4000 |
從圖中可以看出,變量x的地址為4000, x中的值為20;指針變量p的地址為3000, p指向X。也就是說,指針變量p的內(nèi)存單元中存儲著變量x的地址。即指針變量p的值為x的地址(4000 )。
點(diǎn)擊加載更多評論>>