7、C语言:常见C程序错误

常见C程序错误

  1. 标识符的大小写有区别
int a = 5;
A = a + 1;

C语言默认同一个字母的大写和小写形式代表不同的字符。习惯上,符号常量名用大写,变量名用小写。

  1. 忽略变量的类型导致的运算不合法
    例如浮点数a和b不能进行取余操作。

  2. 字符常量和字符串常量混淆
    字符用单引号,字符串用双引号。

  3. 引用未初始化的变量
    未初始化变量的值是随机的,使用这些数据会造成不可预料的后果。

  4. ”=“和”
    ”=“是赋值运算符,”
    “是关系运算符

  5. 少分号或多分号
    分号是C语句中不可缺少的一部分,语句末尾必须有分号。

  6. scanf和printf函数的使用问题
    调用scanf函数时地址表列中的变量缺少”&“。
    调用scanf函数时输入数据的格式问题。
    调用printf函数时输出表列中的变量多写了”&“。
    调用printf函数时输出数据的格式问题。

  7. switch语句中漏写break
    由于case只起标号作用,而不起判断作用,因此没有case后面都应该加break

  8. 数据溢出
    C程序中的数据都有类型属性,每一种类型的数据都有其取值范围限制。因此,在程序执行过程中,若运算结果超出变量的取值范围,则由于溢出而表现为运算结果错误。

  9. 定长数组和变长数组
    定长数组: int a[10];
    变长数组:

int n;
int arr[n];   //并非所有的C编译系统都支持

可采用动态内存申请的方法并用指针保存内存空间的地址:

int *ptr;
ptr = (int *)malloc(n*sizeof(int));
  1. 数组下标的有效范围
    数组元素的下标值由0开始,直到”元素个数“减去1,引用数组元素时以”元素个数“作为下标会导致越界访问问题。

  2. 混淆数组名与指针变量
    数组名代表数组的首地址,它的值是一个常量,不能被修改。如果a为数组名,那么a++就是非法的。

  3. 使用指针的常用问题
    1)内存泄漏:编程时注意malloc和free的配合使用
    2)空指针:空指针在C程序中由特殊的意义,通常用来判断一个指针的有效性。
    3)野指针:指已经释放掉的内存指针。
    释放内存后立即把对应指针置为空值(即p = NULL),这是避免野指针常用的方法。
    4)返回指向临时变量的指针
    5)试图修改常量

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值