C++常見知識點總結

1.採用#include“< >”方式進行包含的頭文件表示讓編譯器在編譯器的預設標準路徑下去進行搜索相應的頭文件,如果找不到則報錯。而#include "":表示首先工作目錄下開始搜索,對於自定義文件搜索比較快,然後搜索整個磁盤。

2.“%-30.4f”在print中使用,其中,-:左對齊, 30:最小字段寬度,.4:精確度保留小數4位,e:科學計數法;

3.static與const之間的區別:static靜態變量存儲在靜態域中,static變量(注意是變量)無論局部全局初始化爲初始化鏈接期都被分配到了data段,final常量編譯器存儲在常量池中。

3.堆和棧的部分區別:堆是程序員進行申請和釋放的,因此堆是向上,也就是向高地址方向的!棧是系統進行釋放的,且棧區大小一般是定的2M,因此棧是向下的,靜態局部變量、靜態全局變量和全局變量的區別,靜態變量沒有初始化時,系統會給默認值,而全局變量不會,全局變量在整個工程中都是可見的,而靜態全局變量只在本文件中可見,靜態局部變量只在此函數內部可見,但函數結束後不釋放!

4.如果一個類中聲明瞭純虛函數,其派生類中沒有對該函數定義,那該函數在派生類中仍爲純虛函數,範式包含儲蓄函數的類都是抽象類。通常重載函數調用的依據是函數名、參數類型、參數個數。內聯函數實在編譯時將目標代碼插入的。

5.常量指針:指針指向的對象是常量,那麼這個對象不能被更改。

1)const int *p;     //指針變量p指向的整型常量,p的值可以改變,但是不能試圖改變指向的整型常數

2)int const *p;     

常量指針的使用要注意,指針指向的對象不能通過這個指針來修改,可是仍然可以通過原來的聲明修改,也就是說常量指針可以被賦值爲變量的地址,之所以叫做常量指針,是限制了通過這個指針修改變量的值,雖然常量指針指向的對象不能變化,可是因爲常量指針是一個變量,因此,常量指針可以不被賦初始值,且可以被重新賦值。

6.指針常量:指針常量的值是指針,這個值因爲是常量,所以不能被賦值。

int a;

int *const b = &a; //const放在指針聲明操作符的右側    ,const修飾的是b,指針變量b的值不能改變

因爲指針常量是一個常量,在聲明的時候一定要給它賦初始值。一旦賦值,以後這個常量再也不能指向別的地址。

雖然指針常量的值不能變,可是它指向的對象是可變的,因爲我們並沒有限制它指向的對象是常量。


7.#define和const相比有如下劣勢:

<1>.const定義常量是有數據類型的,而#define 宏定義常量卻沒有。

<2>.const常量有數據類型,而宏常量沒有數據類型。編譯器可以對const進行類型安全檢查,而後者只進行字符串替換,沒有安全檢查,

<3>有些集成化的調試工具對const常量進行調試,但是不能對宏常量進行調試。


8.實型常量中的e前後必須均有數據,且其後必須爲整數。


9.實型常量又稱實數或浮點數。在C語言中可以用兩種形式表示一個實型常量。<1>小數形式由數字和小數點組成的一種實數表示形式,如0.123,.123,123,0.0,必須要有小數點。<2>指數形式


10.類中變量的初始化的順序是其聲明的順序,跟初始化表中的順序無關。


發佈了24 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章