Disassembly3:variable
- Initializer
C++ Primer上說:如果未初始化的Built-in type是定義在function外部的,那么它將自動(dòng)被初始化為“0”;如果uninitialized的built-in type對(duì)象是定義在function內(nèi)部的,那么它就是undefined的,那么,對(duì)它拷貝和訪問就都是錯(cuò)誤的。
觀察下面這段匯編程序:
同樣是變量,"int i"就沒有相應(yīng)的匯編代碼。而當(dāng)將j的值賦值給i的時(shí)候,是從內(nèi)存的A1F320h地址取出的dword大小的值:
function外部的全局變量并非存儲(chǔ)在??臻g上,而是在其它某處存放著。
- Scope
我們可以觀察下面reused的使用:
第一個(gè)將reused賦值給變量b,這里使用的是從內(nèi)存某個(gè)地址中取出一個(gè)數(shù):
這個(gè)形式的賦值可以看出使用的是全局變量,當(dāng)然了,因?yàn)榈竭@里時(shí),函數(shù)中的局部的reused還沒有定義,所以這里使用的肯定是全局的
再來(lái)看下面的int reused = 0,這里就是新定義了一個(gè)局部變量,當(dāng)我們?cè)偈褂胷eused賦值的時(shí)候,使用的就是這個(gè)局部的reused(局部的reused覆蓋掉了全局的reused):
此時(shí)由于有了局部的reused的存在,如果我們?cè)傧胧褂萌值膔eused,就必須加上scope operator:
?
轉(zhuǎn)載于:https://www.cnblogs.com/predator-wang/p/4899093.html
總結(jié)
以上是生活随笔為你收集整理的Disassembly3:variable的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java多线程-新特性-线程池
- 下一篇: WMI