c 中變數地址存放在變數名中,那變數名的地址在哪呢

時間 2021-08-11 17:34:59

1樓:匿名使用者

這不是一言兩語可以說清的。你需要理解cpu指令、彙編、windows作業系統與c++編譯器的運作原理。

對於int n = 5;首先要說明n的地址更有可能是0x00410fc0,靠近頂端地址是存放核心資料的

編譯器編譯它時,產生類似mov [0x00410fc0],5的指令,其中並沒有出現n,n只是編譯時供編譯器識別的名字,是一個高階語言抽象出來的概念,在真實執行的程式中並不存在n,至於n的地址是0x00410fc0還是其他的什麼,這是由聯結器(linker)決定的,聯結器把全域性變數放在.exe檔案中,執行.exe檔案時全域性變數在類似0x00430000左右的地址。

區域性變數在棧上,一般地址為0x00120000左右。

地址0xffbffb0c並不需要一個地址去存放它,因為在最後產生.exe檔案它自己知道它需要的一個值存放在什麼地址,所以就在它的二進位制**中把0xffbffb0c硬編碼進來了

要加深理解,請參看我的另兩篇回答:

2樓:

只想過指標指向的值放在堆上,指標本身的地址放在棧上..像這種指標的名稱和它的地址是怎麼聯絡的問題真沒想過.

系統應該是直接找n,由n獲得地址,由地址獲得值...是不是把n當作地址的別名處理的呢?期待高手回答!

c++中變數的地址是什麼型別的

3樓:匿名使用者

變數地址是什麼型別, 這是個怪異的問題, 表示你沒有理解其基礎.

電腦的作業, 都是單純的資料回與邏輯答,

* 我們說的十進位制, 十六進位制, 都只是對同一個數字的不同表達方式, 在電腦中都是一樣的.

0x30(h) = 48(d) = 60(8) = 110000(2)

* 變數型態, 指的是, 電腦對某位置的處理方式, 會依照宣告的型態採取不同的作業.

某一個位址100(d), 存放內容48(d).

如果該變數宣告為char, 程式編譯過程會以 1byte 處理這個變數. 資料就是48(d), 你要說0x30(h)也行. (只是人眼看到的字元不同, 數字的物理意義相同)

如果該變數宣告為int, 程式編譯過程會接連讀取2bytes做為資料, 這時候就要同時看位置101(d)裡面是放什麼.

你指的string, 只是告訴編譯器, 要怎麼去判斷與處理後面的變數. 並不是變數本身的型別或狀態. 對於電腦來說, 就只是一個儲存地址而已.

至於地址的大小, 或容量寬度, 則是依照不同電腦不同編譯器, 會有所不同.

VB 的變數命名規則??vb中變數名的命名規則

b錯了因為vb變數名不能有空格答案應該是d 必須以字母開頭不能有特殊的名稱d選項沒問題。如果你這是 vb6,那麼就是題目錯了,vb6 的變數首字母只能是英文本母或者是漢字 僅限中文版 不能是下劃線。如果你這是 那麼就是選 c。這道應該選b選項!在變數中不能含有符號!首位不能是空格。看看吧。慢慢來。v...

VB的變數名的是

使用變數和常量 變數是計算機記憶體中已命名的儲存位置,其中包含了數字或字串等資料。變數包含的資訊被稱為變數的值。變數使用使用者便於理解指令碼操作的名稱為使用者提供了一種儲存 檢索和運算元據的途徑。宣告和命名變數 命名和宣告變數應遵循指令碼語言的規則及指導。即使在使用變數前不需要去宣告變數,也應養成在...

Visual Basic的變數名是什麼

在程式執行期間其值可以改變的量叫變數。在visual besic中一個變數名的長度最長不超過40個字元,可以由字母 數字 漢字和下劃線組成,但變數的第一個字母必須是字母或漢字 在visual basic語言中,變數名不區分大小寫。如abc abc abc都認為是一個相同的變數名 國醉易赫靜 dima...