[C语言] 代码调试, 快捷键说明,assert函数,const函数

一、Debug 和 Release 区别

1.Debug  为调试版本

        包含调试信息,不做任何优化,便于程序员调试程序,产生Debug.exe

        可以调试,因为文件中包含了调试信息,文件比release大

2.Release 为发布版本

        进行了各种优化,是程序在代码大小和运行速度是最优,产生Release.exe

        不能调试,可以以处理一些小错误

二、快捷键

F5

        启动调试,经常用来直接调到下一个断点,和F9配合使用

F9

        创建和取消断点(代码执行到这停下来),可以在程序任意位置设置断点,使得程序在需要的位置停下来.

F10 逐过程

        通常用来处理一个过程,一个过程可以是一次函数调用,或是一条语句,不进入函数内部

F11 逐语句

        逐语句,每次都执行一条语句,可以使我们逻辑进入函数内部,   shift+F11跳出函数

Ctrl+F5

        开始执行不调试,想要程序不调试直接使用

监视窗口

        调试-窗口-监视-监视1.....

   三、 疑题:

#include<stdio.h>
main()
{
	int i = 0;
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	for (i = 0; i <= 12; i++)
	{
		printf("hehe\n");
		arr[i] = 0;
	}
	return 0;
}

  以上代码将会循环输出原因:

        arr数组下标越界, 系统将申请临时非法空间,给越界数组元素存储.

        在栈存储过程中, 先默认使用 高地址 处的空间, 再使用 低地址 处的空间

        数组随着下标增长,地址 由低到高变化

        当arr数组越界时,  arr[12]  地址 与 i 地址 碰巧重合, 所以把i的 值修改为了 0,从而循环.

vc6.0 环境 <=10 死循环 

gcc编译器 <=11 死循环

vs2013     <=12  死循环

解决办法:

1.将数组定义,与下标定义调换 定义先后位置

2.切换为 release版本

栈存储示意图:

四、优秀代码:

  1.         运行正常
  2.         bug少
  3.         效率高
  4.         可读性高
  5.         可维护性高
  6.         注释清晰
  7.         文档齐全

五、常见coding技巧

  1.         使用assert        
  2.         尽量使用const
  3.         养成良好编码风格
  4.         添加必要的注释
  5.         避免编码的陷阱

六、assert()函数

        头文件:assert.h

                用法:断言函数,当函数内表达式为真时,什么都不发生,   当为假时,出现报错.

                用途:(出现错误时,可以及时提醒,保证指针有效性)

七、 const 成员函数( const Member Functions)

       在 C++ 中是一种特殊的成员函数,它保证不会修改对象的状态

                用途1:当子函数传参时,在 形参前面加上const,确保形参不会修改值.

                用途2: 定义变量时,放在类型前面, 如const int a=10;  将不能修改a的值.  

                const int *p, 修饰 指针变量 *p          int * const p  修饰变量  p

        

八、常见错误

        编译性错误

                直接看错误提示信息,解决问题,双击提示信息,定位错误

        链接性错误

                看错误信息,标识符一般为 标识符名不存在或者拼写错误

        运行时错误

                借助调试,逐步定位

        

        

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值