常易忽视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程序设计(第四版)