嵌入式 C 语言开发常见错误第一篇

常易忽视C开发时错误点,面试也容易出现的题目

break
1.一般我们用
switch()
{
case () :执行该case条件的语句;break;
default:;break;
}
注意:break关键字,只能用于跳出最近那层循环语句(for ,while,do…while)或者switch语句,而不是if语句;看起来像很简单,但是到嵌套许多循环时,极其容易忽略。
sizeof(这是关键字,不是函数)
sizeof作用是返回一个对象或者类型所占的内存字节数,对绝大多数编译器而言,返回值为无符号整形数据。
注意:易错点容易对指针应用sizeof操作符


#include<stdio.h>
int fun(char a[])//这一句相当于fun(char *a)
{
  int c= sizeof(a)/sizeof(a[0]);
  return c;
}
int main()
{
  char a[20]="hello world!";
  int b = 0;
  int len =0;
  b = sizeof(a)/sizeof(a[0]);//这里就能正确求出数组长度
  printf("b= %d\n",b);

 len= fun(a);//这里就是出问题关键点 理由如下
 */*用数组名作为参数,实参数组名代表该数组首元素的地址,而形参是用来接收从实参传递过来的数组首元素地址,因此形参应该是一个指针变量(只有指针变量才能存放地址)。实际上,c编译都是将形参数组名作为指针变量来处理*/*
printf("len= %d\n",len);//这个长度是指针在系统中所占长度 易错点
 return 0;
}

非常感谢wind_demon博友的指正,下次写文章会更加严谨。
再次感谢
参考文献:谭浩强 C程序设计(第四版)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值