溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C言語變量的地址

發(fā)布時間:2020-04-18 09:33:26 來源:網(wǎng)絡(luò) 閱讀:431 作者:yuw2018 欄目:網(wǎng)絡(luò)安全

要研討指針,我們得先來深化了解內(nèi)存地址這個概念。打個比如:全部內(nèi)存就相當(dāng)于一個具有許多房間的大樓,每一個房間都有房間號,比方從 101、102、103 不斷到 NNN,我們可以說這些房間號就是房間的地址。絕對應(yīng)的內(nèi)存中的每一個單位也都有本人的編號,比方從0x00、0x01、0x02 不斷到 0xNN,我們異樣可以說這些編號就是內(nèi)存單位的地址。房間里可以住人,對應(yīng)的內(nèi)存單位里就可以“住進(jìn)”變量了:假設(shè)一位名字叫 A 的人住在 101 房間,我們可以說 A 的住址就是 101,或許 101 就是 A 的住址;對應(yīng)的,假設(shè)一個名為 x 的變量住在編號為 0x00 的這個內(nèi)存單位中,那么我們可以說變量 x 的內(nèi)存地址就是 0x00,或許 0x00就是變量 x 的地址。
根本的內(nèi)存單位是字節(jié),英文單詞為 Byte,我們所運(yùn)用的 STC89C52 單片機(jī)共有 512 字節(jié)的 RAM,就是我們所謂的內(nèi)存,但它分為外部 256 字節(jié)和內(nèi)部 256 字節(jié),我們僅之內(nèi)部的 256 字節(jié)為例,很分明其地址的編號從 0 開端就是 0x00~0xFF。我們用 C 言語界說的各類變量就存在 0x00~0xFF 的地址規(guī)模內(nèi),而分歧類型的變量會占用分歧數(shù)目的內(nèi)存單位,即字節(jié),可以聯(lián)合后面講過的 C 言語變量類型深化了解。假設(shè)如今界說了

			unsigned char a = 1; unsigned char b = 2; unsigned int c = 3; unsigned long d = 4;

如許 4 個變量,我們把這 4 個變量辨別放到內(nèi)存中,就會是表 12-1 中所列的樣子,我們先來大約理解一下他們的存儲方法。
表12-1 變量存儲方法

內(nèi)存地址存儲的數(shù)據(jù)
…………
0x07d
0x06d
0x05d
0x04d
0x03c
0x02c
0x01b
0x00a


變量 a、b 和 c 和 d 之間的變量類型分歧,因而在內(nèi)存中所占的存儲單位也紛歧樣,a 和b 都占一個字節(jié),c 占了 2 個字節(jié),而 d 占了 4 個字節(jié)。那么,a 的地址就是 0x00,b 的地址就是 0x01,c 的地址就是 0x02,d 的地址就是 0x04,它們的地址的表達(dá)方法可以寫成:&a,&b,&c,&d。如許就代表了響應(yīng)變量的地址,C 言語中變量前加一個&表現(xiàn)取這個變量的地址,&在這里就叫做“取址符”。
講到這里,有一點(diǎn)延長內(nèi)容,人人可以理解下:比方變量 c 是 unsigned int 類型的,占了2 個字節(jié),存儲在了 0x02 和 0x03 這兩個內(nèi)存地址上,那么 0x02 是它的低字節(jié)照樣高字節(jié)呢?
這個成績由所用的 C 編譯器與單片機(jī)架構(gòu)配合決議,單片機(jī)類型分歧就有能夠分歧,人人曉得這么回事即可。比方:在我們運(yùn)用的 Keil+51 單片機(jī)的情況下,0x02 存的是高字節(jié),0x03存的是低字節(jié)。這是編譯底層完成上的細(xì)節(jié)成績,并不影響下層的使用,如下這兩種狀況在使用上涓滴不受這個細(xì)節(jié)的影響:強(qiáng)迫類型轉(zhuǎn)換——b = (unsigned char) c,那么 b 的值必定是 c 的低字節(jié);取地址——&c,則失掉的必定是 0x02,這多是 C 言語自身所決議的規(guī)矩,不因單片機(jī)編譯器的分歧而有所改動。
實(shí)踐生涯中,我們要尋覓一團(tuán)體有兩種方法,一種方法是經(jīng)過它的名字來找人,還有第二種方法就是經(jīng)過它的室廬地址來找人。我們在派出所的戶籍治理零碎的信息輸出方框內(nèi),輸出小明的家庭住址,零碎會主動指向小明的相干信息,輸出小剛的家庭住址,零碎會主動指向小剛的相干信息。這個供我們輸出地址的方框,在戶籍治理零碎叫做“地址輸出框”。
那么,在 C 言語中,我們要拜訪一個變量,異樣有兩種方法:一種是經(jīng)過變量名來拜訪,另一種天然就是經(jīng)過變量的地址來拜訪了。在 C 言語中,地址就同等于指針,變量的地址就是變量的指針。我們要把地址送到上邊誰人所謂的“地址輸出框”內(nèi),這個“地址輸出框”既可以輸出 x 的指針,又可以輸出 y 的指針,所以相當(dāng)于一個特別的變量——保管指針的變量,因而稱之為指針變量,簡稱為指針,而平日我們說的指針就是指指針變量。
地址輸出框輸出誰的地址,指向的就是這團(tuán)體的信息,而給指針變量輸出哪個通俗變量的地址,它天然就指向了這個變量的內(nèi)容,平日的說法就是指針指向了該變量。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI