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