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