1.if 語句中各種與0比較
#include <stdio.h>
int main()
{
//布爾值
bool flag = 1;
if (flag)
{
//良好風格
}
//整形
int i = 2;
if (2 == i)
{
}
//布爾值
double x = 0;
if (0.0 == x)
{
//不能如此使用,雖然會進來
printf("X=0\n");
}
if ((x>=-0.001) && (x<=0.001))
{
printf("X=0OK\n");
}
//指針
char* p = NULL;
if (NULL == p)
{
printf("NULL POINTER\n");
}
return 1;
}
【建議4-4-1】在多重循環中,如果有可能,應當將最長的循環放在最內層,最短的循環放在最外層,以減少CPU跨切循環層的次數
【建議4-5-1】建議for語句的循環控制變量的取值採用“半開半閉區間”寫法。
示例4-5(a)中的x值屬於半開半閉區間“0 =< x < N”,起點到終點的間隔爲N,循環次數爲N。
示例4-5(b)中的x值屬於閉區間“0 =< x <= N-1”,起點到終點的間隔爲N-1,循環次數爲N。
【規則5-2-1】在C++ 程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。【規則6-1-4】如果輸入參數以值傳遞的方式傳遞對象,則宜改用“const &”方式來傳遞,這樣可以省去臨時對象的構造和析構過程,從而提高效率。
【規則6-2-2】函數名字與返回值類型在語義上不可衝突。
違反這條規則的典型代表是C標準庫函數getchar。
例如:
char c;
c = getchar();
if (c == EOF)
類的引用傳遞和值傳遞
引用和指針的區別
(1)引用被創建的同時必須被初始化(指針則可以在任何時候被初始化)。
(2)不能有NULL引用,引用必須與合法的存儲單元關聯(指針則可以是NULL)。
(3)一旦引用被初始化,就不能改變引用的關係(指針則可以隨時改變所指的對象)。
C++語言中,函數的參數和返回值的傳遞方式有三種:值傳遞、指針傳遞和引用傳遞。
#include <stdio.h>
//值傳遞
void Func1(int x)
{
x += 10;
return;
}
//指針傳遞
void Func2(int* x)
{
//有可能指針爲空
*x += 10;
return;
}
//引用傳遞
void Func3(int& x)
{
x += 10;
return;
}
int main()
{
int x = 0;
Func1(x);
printf("x = %d\n",x);//0
x = 0;
Func2(&x);
printf("x = %d\n",x);//10
x = 0;
Func3(x);
printf("x = %d\n",x);//10
//引用傳遞具有指針傳遞的效果,形式上類似值傳遞
return 1;
}