1、辨別符命名規則:
(1)由英文字母、數字和下劃線組成;
(2)英文字母的大小要加以差別;
(3)不允許使用數字開頭;
(4)不能用c++中的關鍵字。
2、c++提供了 const 關鍵字聲明常量,const 表示一個“常值變量”,即不能改變值的變量。
3、4294967295是32為cpu寄存器以及visual c++6.0編譯器所允許的最大正整數。
4、整型常量:
(1)十進制整型常量:十進制整型常量由0~9的數字組成。不能以 0 開頭,沒有小數部分。
(2)八進制整型常量:八進制形式整型常量必須以 0 開頭,即以 0 作為八進制數的字首。
(3)十六進制整型常量:十六進制整型常量的字首為 0x 或 0x。由0~9的數字和a~f(a~f大小寫相同)的字母組成。
實型常量:
(1)小數表示法;
(2)科學記數法:指數部分以符号“e”或“e”開始,但必須是整數,并且符号“e”或“e”兩邊都必須有至少一位數。例如:1.2e20, -3.4e-2
5、資料類型:
類型 所占位元組數
char 1
bool 1
short 2
int 4
long 4
float 4
double 8
long doubel 8
6、易錯:
<a href="http://my.oschina.net/jacedy/blog/343354#">?</a>
1
2
3
<code>cout<<135/25<<endl; </code><code>//輸出:5</code>
<code>cout<<135.0/25<<endl; </code><code>//輸出:5.4</code>
<code>char</code> <code>arr[5] = </code><code>"hello"</code><code>; </code><code>//錯誤的代碼,數組溢出</code>
7、在計算機中,資料都是以二進制形式表示,以位元組為最小機關進行存儲。
8、共用體的記憶體空間可以用來存放多種不同類型的成員,但是在某一瞬時隻有一個成員起作用,而起作用的成員是最後一次存放的成員。
9、大寫字母的ascii碼是從65開始的,而小寫字母的ascii碼是從97開始的,是以隻要将原字元的ascii碼加上32就可以獲得對應的小寫字母了。
(0 - 0;'0' - 48;'a' - 65;'a' - 97)
10、盡量不要在同一段代碼中的複合語句内外定義同名的變量,雖然這樣是合法的,但是不利于程式的閱讀,也容易出現邏輯錯誤。
11、switch語句中的break語句屬于跳轉語句,在switch語句中,當遇到break語句時,程式将跳轉到switch語句之後的下一行代碼處。如果switch語句中沒有使用break語句,當表達式與某個常量比對時,将執行目前case語句代碼,并且繼續向下執行case語句的代碼。直到遇到break語句或者switch語句結束。
12、在程式中使用do while語句時,不要忘記while 語句部分在末尾要添加分号。
13、break語句跳出本層循環;continue語句跳出本次循環。
14、在程式設計中建議少用、慎用goto 語句,但是并不是禁用goto 語句,在嵌套的循環語句中,goto 語句可以直接跳出所有外層循環。
15、return語句将退出目前函數,傳回到調用該函數的地方,開始執行吓一跳語句;
exit 語句用于終止目前調用的程序,通常用于結束目前的應用程式。
16、在函數調用的時候要注意是傳值調用還是傳址調用。
17、省略号“…”也是參數,代表函數的參數是不固定的,可以傳遞一個或多個參數。
18、重載函數是指多個函數具有相同的函數名稱,而參數類型或參數個數不同。
(1)函數的傳回值類型不作為區分重載函數的辨別;
(2)對于普通的函數參數來說const 關鍵字不作為區分重載函數的辨別;
(3)如果參數的類型是指針或引用類型,則const 關鍵字将作為重載函數的辨別;
(4)參數的預設值不作為區分重載函數的辨別;
(5)使用typedef 自定義類型不作為重載的辨別。
19、在c++中定義類時,類名通常以答謝字母c開頭,成員變量以“m_”為字首,這是一個約定俗成的習慣。
20、定義類的成員變量與定義普通的變量有所不同,那就是不能夠在定義時對成員變量進行初始化。
21、析構函數不能夠被重載,一個類隻能有一個析構函數。
22、當定義一個類對象時,首先從頂層依次調用基類的構造函數,最後調用自身的構造函數;析構函數的調用順序與構造函數正好相反,首先調用自身的析構函數,然後依次調用基類的析構函數。
23、對于多繼承,c++語言提供了虛繼承的機制,虛繼承使得子類中隻存在一個基類。
24、定義宏時,最好對每個資料加上括号,防止造成二義性問題,宏定義隻是簡單的替換。
25、在c語言中,const的用法主要有定義常量、修飾函數參數、修飾函數傳回值等3個用處。在c++程式中,它還可以修飾函數的定義體,定義類中某個函數為恆态函數,即不可改變類中的資料成員。
26、内聯函數inline是指嵌入代碼,就是在調用函數的地方不是跳轉,而是直接把代碼寫到那裡去。
27、const常量指派時,必須同時初始化;聲明一個引用,引用不能為空,同時必須初始化。
28、c++的空類預設産生四個函數:預設構造函數、析構函數、拷貝構造函數和指派函數。
29、面向對象技術的基本概念是:類、對象、繼承。
30、struct 與class 的差別在于:struct中變量預設是public, class中變量預設是private。
31、類中的成員變量要初始化必須是在構造函數中或将其設定為static。
32、析構函數可以是内聯函數。
33、析構函數可以是virtual 虛函數類型,但構造函數則不能。
34、覆寫(override)的函數必須有一緻的參數表和傳回值;重載(overload)是指編寫一個與已有函數同名但參數表不同的函數。
35、虛繼承就是為了節約記憶體的,他是多重繼承中的特有的概念。适用與菱形繼承形式。
虛函數繼承就是覆寫。即基類中的虛函數被派生類中的同名函數所覆寫。
36、左移運算符(<<)是雙目運算符,其功能是把"<<"運算符左邊的運算數的各二進位全部左移若幹位,移動的位數由"<<" 運算符右邊的數指定,高位丢棄,低位補0。 如:a<<2 //代表a的二進數向左移動2位。實際上左移一位相當于該數乘以2,稱動2位 相當于該數乘以4,以此類推。這種情況隻限于移動位不含1的情況。
右移運算符(>>)是雙目運算符,其功能是把">>"運算符左邊的運算數的各二進位全部右移若幹位,移動的位數按">>" 運算符右邊的數指定。在進行右移時對于有符号的數需要注意符号問題,當為正數時,最高位補0,而為負數時,最高位補0或1取決于編譯 系統的規定,移入0的稱為"邏輯右移",移入1的稱為"算術右移"。(visualc++)是以算術右移。
37、c語言判斷漢字:
4
5
6
7
<code>if</code><code>(is_zh_ch(</code><code>char</code> <code>p)!=0);</code>
<code>int</code> <code>is_zh_ch(</code><code>char</code> <code>p)</code>
<code>{</code>
<code> </code><code>if</code><code>(~(p >> 8) == 0)</code>
<code> </code><code>return</code> <code>0;</code>
<code> </code><code>return</code> <code>-1;</code>
<code>}</code>
和文字表示方法有關。西文字元一個位元組(char)就可以表示(ascii碼中包括了所有的西文字元),因為一個char隻有8位,最多表示256個文字,是以而非西文字元的文字(unicode)全部用兩個位元組表示,機器内部的最小存儲機關是位元組,為了區分連續的兩個char表示的是一個unicode還是兩個西文字母,規定unicode碼的兩個位元組的最高位都是1。
<code>if</code><code>(~(p >> 8) == 0) </code>
<code> </code><code>return</code> <code>0;</code>
的意思是,将char p的符号位(char為8位,即最高位)右移,若是unicode則p>>8後為1111 1111,然後按位取反為0
其實原理上面說過了,unicode碼最高位為1,即符号位為1,上面的代碼和下面的等價:
<code> </code><code>if</code><code>(p<0) </code>
<code> </code><code>return</code> <code>0;</code>
<code> </code><code>return</code> <code>-1;</code>