c++程序在運行的過程當中,內存會被劃分爲如下四個分區html
代碼區:程序的全部程序的二進制代碼,包括註釋會被放到此區ios
全局區:存放靜態變量、全局變量、常量(字符串常量和const修飾的常量),此區的數據將在程序結束後由操做系統釋放c++
棧區:用於存放局部變量、函數參數等,是由編譯器自動釋放和分配,因此不能讓棧區返回一個地址,程序員
堆區:存儲對象(使用new操做符,後面會介紹)由程序員分配釋放,若咱們不釋放,程序結束由操做系統釋放編程
c++中經過new關鍵字將數據開闢到堆區數組
若是是new一個數組app
注意函數
代碼區和全局區是程序編譯成exe可執行文件的時候就已經有了,可是棧區和堆區是程序exe文件執行後產生的url
將不一樣的數據放在不一樣的區域,賦予不一樣的生命週期,提升編程靈活程度spa
使用引用給一個變量起別名
前面文章中的地址傳遞會修改實參,值傳遞不會修改實參,引用做爲函數參數會修改實參,簡化使用指針修改實參的複雜過程
局部變量不能做爲函數的返回值返回
若是是局部靜態變量,能夠返回
引用本質是指針常量
常量引用
前面c++基礎系列有關函數知識有所描述,這裏補充一些函數高級知識
1.c++中函數能夠有默認值
2.c++函數中能夠有佔位參數用來佔位,調用函數必需填補該位置
3.函數重載
定義:同一個做用域下,兩個函數參數類型不一樣或者參數順序不一樣或者個數不一樣。此時這兩個函數名字能夠相同。提升複用性
注意:函數返回值不能做爲函數重載的條件
4.引用也可做爲函數重載條件
5.函數重載遇到默認參數須要注意