【C语言初阶】实用编程技巧(使用const,const修饰指针,使用assert断言、调试程序、杜绝”野指针“、Debug和Release版本、如何屏蔽报警)

一、使用const提高函数的健壮性

1.被 const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性

2.如果参数作输出用,不能加const修饰,否则该参数将失去输出功能。const只能修饰输入参数。

3. 如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地改动该指针,起到保护作用。

4.如果输入参数采用“值传递”,由于函数将自动产生临时变量用于复制该参数,该输入参数本来就无需保护,所以不要加const 修饰。

5.如果给以“指针传递”方式的函数返回值加 const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。

6.如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。

7.const修饰指针变量:

const修饰指针的值:const如果放在*的左边,修饰的是*p,表示指针指向的内容,是不能通过指针来改变的。但是指针变量本身(指针的指向)是可以修改的。

const int* p = #
*p = 20;//错误
p = &n;//正确

提示:const可以放在类型(int)左边,也可以放在右边。

const修饰指针:const如果放在*的右边,修饰的是p,表示指针变量(指针的指向)不能被改变。但是指针指向的内容,可以被改变。

int *const p = #
*p = 20;//正确
 p = &n;//错误

当然const可以即修饰指针的值又修饰指针。这样的指针既不可以改变指向的变量,又不可以改变指向。

const int *const p = #
*p = 20;//错误
p = &n;//错误

二、使用assert断言

不满足条件时中断程序,并报错同时显示错误在源代码中的行号,便于程序员发现错误。

三、养成良好的编码风格

四、添加必要的注释

五、注意分辨操作符

当心那些视觉上不易分辨的操作符发生书写错误。我们经常会把“==”误写成“=”,象“|| ”、“&& ”、“<= ”、“>=”这类符号也很容易发生“丢 1 ”失误。然而编译器却不一定能自动指出这类错误

六、及时初始化

变量(指针、数组)被创建之后应当及时把它们初始化,以防止把未被初始化的变量当成右值使用。

七、强制类型转换

当心自动类型转换发生错误。尽量使用显式的数据类型转换(让人们知道发生了什么事),避免让编译器轻悄悄地进行隐式的数据类型转换。

八、当心越界访问

当心变量发生上溢或下溢,数组的下标越界。

九、不要修补很差劲的代码

如果原有的代码质量比较好,尽量复用它。但是不要修补很差劲的代码,应当重新编写

十、尽量使用库函数

尽量使用标准库函数,不要“发明”已经存在的库函数。

十一、提高程序的效率

1.先优化数据结构和算法,再优化执行代码。

2.有时候时间效率和空间效率可能对立,此时应当分析那个更重要,作出适当的折衷。例如多花费一些内存来提高性能。

3.不要追求紧凑的代码,因为紧凑的代码并不能产生高效的机器码。

十二、养成“使用调试器逐步跟踪程序”的习惯

1.调试快捷键:

        F5:启动调试或直接跳到下一个断点处(在断点和断点间跳跃)

        CTRL+F5:开始执行,不调试

        F9:插入断点

        F10:逐过程(不进入函数)

        F11:逐语句(进入函数)

        Shift+F11:跳出函数调用

2.插入断点:

        a.条件断点:只有当满足一定条件时断点才起作用,用于在循环中插入断点。

        b.在调试过程中可以随时在当前执行语句后插入断点以中断程序。

        c.断点还可以用于跳过多次循环。

十三、杜绝”野指针“

补充内容:Debug和Release版本

1.Debug通常称为调试版本,它包含调试信息,并且不做任何优化,便于程序员调试。

2.Release称为发布版本,它往往是进行了各种优化,使得程序在大小和运行速度上都是最优的,以便用户很好的使用。不包含调试信息,不可以进行调试,assert不起作用。

补充内容:如何屏蔽警告(请慎用)

#pragma warning(disable:4996)

4996是对应报警的代码,可在输出窗口中查看

返回专栏目录https://blog.csdn.net/zty857016148/article/details/127068555

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芥末虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值