高質量C/C++編程讀後筆記一

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;
}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章