摘要:只讀目的是防止程序意外地修改了它的指令。全局區(qū)存放全局變量靜態(tài)變量和常量除了修飾的局部變量。程序結(jié)束時由操作系統(tǒng)釋放。由編譯器自動分配和釋放。注意不要返回局部變量的地址。
C++程序在執(zhí)行時,將內(nèi)存大致分為4個區(qū)域:代碼區(qū),全局區(qū),棧區(qū),堆區(qū)
??????特點:①共享 :對于頻繁被執(zhí)行的程序,只需要在內(nèi)存中有一份代碼即可。
? ? ? ? ? ? ? ? ????②只讀:目的是防止程序意外地修改了它的指令。
//全局變量int g_a = 10;const int c_g_a = 10;int main(){ int l_a = 10; //靜態(tài)變量 static int s_a = 10; //常量:字符串常量/const修飾的變量(全局/局部變量) const char* a = "hello"; const int c_l_a = 10; cout << "局部變量l_a的十進制地址為:" << (int)&l_a << endl; cout << "全局變量g_a的十進制地址為:" << (int)&g_a << endl; cout << "靜態(tài)變量s_a的十進制地址為:" << (int)&s_a << endl; cout << "字符串常量a的十進制地址為:" << (int)a << endl; cout << "const修飾的全局變量c_g_a的十進制地址為:" << (int)&c_g_a << endl; cout << "const修飾的局部變量c_l_a的十進制地址為:" << (int)&c_l_a << endl; return 0;}
??????注意:不要返回局部變量的地址。
int* funcation(){ int a = 10;//存放在棧區(qū),棧區(qū)的數(shù)據(jù)在函數(shù)執(zhí)行完后自動釋放 return &a;}int main(){ int* p = funcation(); cout <<"局部變量a的值為:"<< *p << endl; //第一次正常打印,因為編譯器做了保留 cout << "局部變量a的值為:" << *p << endl; return 0;}
new
)和釋放(delete
),若程序員不釋放,程序結(jié)束時由操作系統(tǒng)回收。int* funcation(){ //new關(guān)鍵字,可以將數(shù)據(jù)開辟到堆區(qū)上 //指針本質(zhì)上也是局部變量,存放在棧區(qū)上,但是保存的數(shù)據(jù)在堆區(qū) int* p = new int(10); return p;}int main(){ int* p = funcation(); cout << *p << endl; cout << *p << endl; return 0;}
Tip:
- 程序運行前分為:代碼區(qū),全局區(qū)
- 程序運行后分為:棧區(qū),堆區(qū)
[注]: 關(guān)于內(nèi)存更詳細的知識?深度剖析數(shù)據(jù)在內(nèi)存中的存儲?幾分鐘讓你了解什么是函數(shù)棧幀的創(chuàng)建和銷毀
//new的基本用法int* p = new int(10);//在堆區(qū)創(chuàng)建整型變量,返回該變量的地址delete p;//釋放int* parr = new int[10];//在堆區(qū)創(chuàng)建一個元素為10的整型數(shù)組,返回數(shù)組首元素的地址delete[] arr;//釋放一個數(shù)組
測試delete
int* funcation(){ int* p = new int(10); return p;}int main(){ int* p = funcation(); cout << *p << endl; cout << *p << endl; delete p; cout << *p << endl; return 0;}
??? ???作用:給變量起個別名。
??? ???語法:數(shù)據(jù)類型
&
別名
=原名
//eg.int a = 10;int& b = a;
??? ???注意:
????????????①引用必須初始化。
????????????②引用一旦初始化就不可以更改了。
//①引用必須初始化 int a = 10; int& b;//錯了!!! //②引用一旦初始化就不可以更改了 int a = 10; int c = 20; int& b = a; int& b = c; //錯了!!!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/120963.html
摘要:文章目錄模板模板的概念函數(shù)模板函數(shù)模板語法函數(shù)模板注意事項函數(shù)模板案例普通函數(shù)與函數(shù)模板的區(qū)別普通函數(shù)與函數(shù)模板的調(diào)用規(guī)則模板的局限性類模板類模板語法類模板與函數(shù)模板區(qū)別類模板中成員函數(shù)創(chuàng)建時機類模板對象做函數(shù)參數(shù)類模 ...
摘要:本書主要圍繞一系列逐漸復雜的程序問題,以及用以解決這些問題的語言特性展開講解。你不只學到的函數(shù)和結(jié)構(gòu),也會學習到它們的設(shè)計目的和基本原理。因此我們把精力集中在最有價值的地方。本書不僅是對模板的權(quán)威解釋,而且本書還深入地介紹了其他一般的思想。 C++ 入門教程(41課時) - 阿里云大學 C+...
摘要:持續(xù)更新多年的編程語言排行榜,迎來了一個歷史性時刻第一次擁有一個新的領(lǐng)導者編程語言。黑馬程序員推出課程體系,除了個月的大綱課程學習以外,同時提供個月課程內(nèi)容的在線學習提供給畢業(yè)之后進入工作崗位的學員繼續(xù)學習。 ...
摘要:學習完多線程之后可以通過下面這些問題檢測自己是否掌握,下面這些問題的答案以及常見多線程知識點的總結(jié)在這里。可選數(shù)據(jù)結(jié)構(gòu)與算法如果你想進入大廠的話,我推薦你在學習完基礎(chǔ)或者多線程之后,就開始每天抽出一點時間來學習算法和數(shù)據(jù)結(jié)構(gòu)。 我自己總結(jié)的Java學習的系統(tǒng)知識點以及面試問題,已經(jīng)開源,目前已經(jīng) 35k+ Star。會一直完善下去,歡迎建議和指導,同時也歡迎Star: https://...
摘要:下面列舉了游戲開發(fā)中常見的崗位以及兩條常見的協(xié)作開發(fā)的流水線其實學習游戲引擎,前期對于任何崗位來說路線都是相似的,基本上就是一個熟悉基本操作理解基本概念拓展專業(yè)知識的過程。當然這不是絕對的,任何引擎的開始階段和大成階段都是相似的。 這是【游戲開發(fā)那些事】第51篇原創(chuàng) 前言:游戲引擎,表面...
閱讀 3398·2023-04-25 22:04
閱讀 2196·2021-11-22 15:29
閱讀 2160·2021-10-11 10:57
閱讀 1402·2021-09-24 09:48
閱讀 3146·2021-09-09 09:34
閱讀 2543·2021-09-02 15:21
閱讀 2392·2019-08-30 15:53
閱讀 1119·2019-08-30 14:07