高质量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;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值