一、#include “filename.h”和#include 的區(qū)別
#include “filename.h”是指編譯器將從當(dāng)前工作目錄上開始查找此文件。
#include 是指編譯器將從標(biāo)準(zhǔn)庫目錄中開始查找此文件。
二、頭文件的作用
加強安全檢測。
通過頭文件可能方便地調(diào)用庫功能,而不必關(guān)心其實現(xiàn)方式。
三、* , &修飾符的位置
對于*和&修飾符,為了避免誤解,最好將修飾符緊靠變量名。
四、if語句
不要將布爾變量與任何值進(jìn)行比較,那會很容易出錯的。
整形變量必須要有類型相同的值進(jìn)行比較。
浮點變量最好少比點,就算要比也要有值進(jìn)行限制。
指針變量要和NULL進(jìn)行比較,不要和布爾型和整形比較。
五、const和#define的比較
const有數(shù)據(jù)類型,#define沒有數(shù)據(jù)類型。
個別編譯器中const可以進(jìn)行調(diào)試,#define不可以進(jìn)行調(diào)試。
在類中定義常量有兩種方式:
1、 在類在聲明常量,但不賦值,在構(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ù)是以值傳遞的話,最好使用引用傳遞代替,因為引用傳遞省去了臨時對象的構(gòu)造和析構(gòu)。
函數(shù)的類型不能省略,就算沒有也要加個void。
七、函數(shù)體中的指針或引用常量不能被返回
Char *func(void)
{
char str[]=”Hello Word”;
//這個是不能被返回的,因為str是個指定變量,不是一般的值,函數(shù)結(jié)束后會被注銷掉
return str;
}
函數(shù)體內(nèi)的指針變量并不會隨著函數(shù)的消亡而自動釋放。
八、一個內(nèi)存拷貝函數(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)蒙古 |