天天看點

局部變量和全局變量的差別

       局部變量可以與全局變量重名,但是局部變量會屏蔽全局變量。要使用全局變量,需要使用::。在函數體内引用變量會用到同名的局部變量而不是全局變量,對于一些編譯器來說,在同一個函數體内可以定義多個同名的局部變量。例如我們可以在一個函數内部,在兩個循環中都定義同名的局部變量i,而局部變量i的作用域在那個循環體内

       具體來說,全局變量和局部變量的差別如下:

1. 作用域不同:全局變量的作用域為整個程式,而局部變量的作用域為目前函數或循環等

2. 記憶體存儲方式不同:全局變量存儲在全局資料區中,局部變量存儲在棧區

3. 生命期不同:全局變量的生命期和主程式一樣,随程式的銷毀而銷毀,局部變量在函數内部或循環内部,随函數的退出或循環退出就不存在了

4. 使用方式不同:全局變量在聲明後程式的各個部分都可以用到,但是局部變量隻能在局部使用。函數内部會優先使用局部變量再使用全局變量

       需要注意一點的是,局部變量不能指派為同名全局變量的值。

程式輸出:-898993460

分析如下:

1. 定義了一個全局變量value初始化值為1,同時在main函數内部定義了一個局部變量value

2. 在main函數内部對局部變量value進行指派value = value,因為局部變量會屏蔽全局變量,是以此時指派語句中兩個value都是局部變量,因為value還沒有初始化是以值為随機值

3. 是以輸出value的時候值為随機值,而不是1

繼續閱讀