變量的內存存放與作用域
1.變量的聲明、定義、初始化
一個程序可由多個源文件實現。
變量可以多次聲明,但隻能被定義一次。
聲明通過extern關鍵字實現。
extern int i; //聲明
int j; //定義
2.變量的內存存放
全局變量與局部變量在沒有初始化時,取初值的方式不同。前者是全0.
c++內存分為代碼、堆、棧、常量和全局//靜態存儲區。
不同變量的存儲位置:
全局/靜態存儲區——全局變量,static變量;
棧——局部變量、函數調用時的參數。棧的容量一般比較有限;
堆——new運算符分配,需由delete釋放;若分配失敗,new返回NULL,記得安全性檢查。
常量存儲區——這是一塊比較特殊的存儲區,裏麵存放的是常量。
3.標示符的作用域
for(int i=0;i<10;i++){//i僅在這裏和for小括號內有效}
c++中大多數作用域都以大括號分隔。
:: 類的作用域分辨符
#include<iostream> using namespace std; void show(){cout<<"hello";} class A{ public: static void show(){cout<<"hi ";} static void fun(){ show(); //成員函數 ::show(); //全局函數 } }; int main(int argc, char** argv) { A::fun(); return 0; } /*hi hello*/
4.內聯函數
函數的調用是有開銷的。比如:保存CPU環境、實參到形參的傳遞、函數執行完返回、恢複CPU環境。而使用inline函數可以達到空間換時間的效果。它告訴編譯器把此函數插入到調用的地方去。
關鍵字inline 必須與函數定義體放在一起才能使函數成為內聯,僅將inline 放在函數聲明前麵不起任何作用。
如下風格的函數Foo 不能成為內聯函數:
inline void Foo(int x, int y); // inline 僅與函數聲明放在一起
void Foo(int x, int y){}
而如下風格的函數Foo 則成為內聯函數:
void Foo(int x, int y);
inline void Foo(int x, int y) // inline 與函數定義體放在一起{}
所以說,inline 是一種“用於實現的關鍵字”,而不是一種“用於聲明的關鍵字”。
最後更新:2017-04-03 12:55:42
上一篇:
數據類型、表達式 類型轉換
下一篇:
html5關鍵詞相關整理
w3c係列CSS之路(五):詳解visual formatting model
[原創/討論][windows核心編程一外傳]關於訪問虛擬地址0的方法。
ANDROID性能調優
如何修複Kindle頻繁自動鎖屏和解鎖
A file provided for interest-showing Friends
Core i7-4770K的詳細性能
海拉與北汽合資工廠天津啟動,我們還一起聊了聊自動駕駛下車燈的智能化未來
gdb可以查詢執行文件的宏, 但是查詢不了o文件的宏
Get the Mime Type from a File
Ubuntu adb devices : no permissions 解決方法