c语言常见小错误记录

使用C编程经常会碰到各种各样的问题,很多问题都是小错误引起的,却不太容易发现,在此记录一下。

1、调用空指针

这是一个比较常见的错误,申明了某个类型的指针变量却没有给其赋值,之后直接调用就会发生这种问题,如果在单片机中一般会发生死机的情况。

对于指针的使用,通常都会先判断非空再使用,这样可以极大的避免这类错误。

2、类型申明错误

如果定义了一个char类型的变量,在使用extern外部申明的时候申明成short类型,使用的时候很容易发生越界问题,因为你以为是按照char型操作,计算机却按照short操作。

3、数组越界

数组越界也是很常见的问题,工作中有一次出现的bug就是数组越界导致的。在一些嵌入式设备中,数组越界后问题不会立即出现,而是在特定情况下才出现,原因是越界的数组可能覆盖了其后地址中的一段代码或数据,如果程序运行过程中不使用这段代码或数据就不会出问题,一旦使用就会出问题,

4、指针传参问题

很多时候需要将指针作为参数传入函数,此时如果有以下两个情况:

         a、这个指针变量是临时的、局部的;

         b、这个指针在别的地方使用;

此时就会出现指针指的值不对了。原因很简单,a条件说明这个函数退出后这个指针变量就不存在了,所以之后调用调了一个不存在的指针。

实际中两种场景会出现上述问题,

1、多任务系统,通过队列发送指针变量;

2、中断、非阻塞函数的参数传入指针变量;

5、char数组作为string操作问题

在c语言中,string类型就是char类型的数组,唯一不同的是string类型的最后用0作为结束标志。所以如果自己申明的char数组想作为string操作的话一定要记得在数组中加0作为结束符,否则操作会错误。

6、long和long long类型的格式化输出

长整型的格式化输出要使用%llu-%lu-%ld-%lld。

 

 

                                  

猜你喜欢

转载自blog.csdn.net/G_Crisis/article/details/81359920
今日推荐