C语言新手及老手常见错误及避坑指南
-
语法入门必坑
-
变量/数据类型必坑
-
运算符/条件&循环必坑
-
指针/数组/字符串必坑
-
函数必坑
本文整理了C语言学习阶段中高频踩的刚需避坑点,覆盖“Hello World”入门到内存管理的核心场景,不管是纯C语言新手,还是初学者看完能避开90%的基础错误,附赠避坑清单思维导图,文末可取!
语法入门必坑
1.遗漏#include <stdio.h>等核心头文件
在初次写程序的新手常常会忘记写头文件或者写错常见情况如下:

注意:当出现这个报错,则说明头文件错误,这时候就看看自己的头文件是否写了或写错
2.main函数写错,新手常常写成int mian;
新手常常写错程序报错也不知道哪里错了,盯着代码看半天。

注意:当出现无法解析外部符号‘mian’时,就是main写错了。
-
3.运算符混用:如“=”赋值与“==”判断混用(if语句中最常见逻辑错误)
变量/数据类型必坑
-
1.数据类型不匹配
如:float 用%d输出,代码运算没有结果等,然后一个劲的找代码错误,结果发现只是这个小小的错误(又是你中招了吧),在这里不演示。
-
2.字符使用混淆
如: 单字符/双字符用反“ “” ‘’ 判断符号与赋值符号:‘==’ 与 ‘=’。
运算符/条件&循环必坑(运算/逻辑错误重灾区)
-
1.整数除法截断小数(新手老手都容易犯的错!!!):
如5/2=2,在计算的时常常弄错,结果代码排查半天都找不出问题。(说的是不是你)

-
2.自减/自增使用不当
如:分不清前置和后置
int b=1; int a=1;
b=++a;//前置,先自增再赋值 结果:b=a=2
b=a++;//后置,先赋值再自增 结果:b=1,a=2`
记忆口诀:加前先自增,加后先赋值。
-
3.if语句遗漏大括号(多语句执行)(新手经常犯的错误)
如:(是不是又有你)
int n=1;
if(n>=10)
n=0;
printf("作者真帅\\n");
最后的结果:则会打印”作者真帅“。但你的本意是当n>=10时,打印:作者真帅。 解释:没有大括号时,if语句只可以控制后面一条语句,再后面则无法约束。
指针/数组/字符串必坑
-
1.未初始化指针/空指针解应用(这里不做演示)
-
2. 释放空间后未置空指针
-
3.多次释放同一指针
函数必坑(新手易忽略的问题)
1.函数调用参数类型/数量不匹配
int add(int x,int y)//接受整形的形参
{
return x+y;
}
int main()
{
int res1=add(3.8,4.5);//传递浮点的实参
printf("%d",res);
}
结果:报错 解析:add函数接受是整形,而传递的实参是浮点型。
2.递归函数无终止条件
如:
int add(int n=6)
{
if(n==0)
return 0;
return 1+add(n+1);//正确写法:return1+add(n-1);//使每一次代码运行时都接近终止条件
}
结果: 程序一直运行。 解析: 递归函数无法到达终止条件
评论可以获得:本章的思维导图




