一、#include “filename.h”和#include 的區(qū)別
#include “filename.h”是指編譯器將從當(dāng)前工作目錄上開(kāi)始查找此文件。
#include 是指編譯器將從標(biāo)準(zhǔn)庫(kù)目錄中開(kāi)始查找此文件。
二、頭文件的作用
加強(qiáng)安全檢測(cè)。
通過(guò)頭文件可能方便地調(diào)用庫(kù)功能,而不必關(guān)心其實(shí)現(xiàn)方式。
三、* , &修飾符的位置
對(duì)于*和&修飾符,為了避免誤解,最好將修飾符緊靠變量名。
四、if語(yǔ)句
不要將布爾變量與任何值進(jìn)行比較,那會(huì)很容易出錯(cuò)的。
整形變量必須要有類(lèi)型相同的值進(jìn)行比較。
浮點(diǎn)變量最好少比點(diǎn),就算要比也要有值進(jìn)行限制。
指針變量要和NULL進(jìn)行比較,不要和布爾型和整形比較。
五、const和#define的比較
const有數(shù)據(jù)類(lèi)型,#define沒(méi)有數(shù)據(jù)類(lèi)型。
個(gè)別編譯器中const可以進(jìn)行調(diào)試,#define不可以進(jìn)行調(diào)試。
在類(lèi)中定義常量有兩種方式:
1、 在類(lèi)在聲明常量,但不賦值,在構(gòu)造函數(shù)初始化表中進(jìn)行賦值。
2、 用枚舉代替const常量。
六、C++函數(shù)中值的傳遞方式
有三種方式:值傳遞(Pass by value)、指針傳遞(Pass by pointer)、引用傳遞(Pass by reference)。
void fun(char c) //pass by value
void fun(char *str) //pass by pointer
void fun(char &str) //pass by reference
如果輸入?yún)?shù)是以值傳遞的話(huà),最好使用引用傳遞代替,因?yàn)橐脗鬟f省去了臨時(shí)對(duì)象的構(gòu)造和析構(gòu)。
函數(shù)的類(lèi)型不能省略,就算沒(méi)有也要加個(gè)void。
七、函數(shù)體中的指針或引用常量不能被返回
Char *func(void)
{
char str[]=”Hello Word”;
//這個(gè)是不能被返回的,因?yàn)閟tr是個(gè)指定變量,不是一般的值,函數(shù)結(jié)束后會(huì)被注銷(xiāo)掉
return str;
}
函數(shù)體內(nèi)的指針變量并不會(huì)隨著函數(shù)的消亡而自動(dòng)釋放。
八、一個(gè)內(nèi)存拷貝函數(shù)的實(shí)現(xiàn)體
void *memcpy(void *pvTo,const void *pvFrom,size_t size)
{
assert((pvTo!=NULL)&&(pvFrom!=NULL));
byte *pbTo=(byte*)pvTo; //防止地址被改變
byte *pbFrom=(byte*)pvFrom;
while (size-- >0)
pbTo++ = pbForm++;
return pvTo;
}
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |