C的几点易错点,知识点梳理
1.Struct使结构体类型,但结构体的成员都是自定义的,但有三种不同的情况需要大家区分:
a. struct Test
{
Int a;
Int b;
.........
};这是自己定义了一个结构体。
b. struct Test
{
Int a;
Int b;
.........
}test;这是自己定义了一个结构体的同时,还申请了一个结构体变量,名字是test。
c. Typedef truct Test
{
Int a;
Int b;
.........
}test;这个可以看成三部分,类型定义typedef,类型,替换名。
2.switch (表达式){
case 值1 : 语句1 break;
case 值2 : 语句2 break;
...
default : 语句n break;
}
从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。假如任何一个case语句的值都不等于表达式的值,就运行可选标签default之下的语句。
3.在面试中常常会考到sizeof(变量名),在面对这种提问时,应该考虑到的时,变量名代表着什么?
例:int ar[5]
ar+1和&ar+1这两种情况的区别是,你必须搞清楚他们代表着什么,ar+1是数组首地址,+1会加数组类型字节大小,但&ar代表着数组指针,&ar+1会增加数组空间大小。
4.float area(float r=6.5);
指定r的默认值为6.5,如果在调用此函数时,确认r的值为6.5,则可以不必给出实参的值,如
area( ); //相当于area(6.5);
如果不想使形参取此默认值,则通过实参另行给出。如area(7.5); //形参得到的值为7.5,而不是6.5
这种方法比较灵活,可以简化编程,提高运行效率。
如果有多个形参,可以使每个形参有一个默认值,也可以只对一部分形参指定默认值,另一部分形参不指定默认值。
还有一点是,int a = int(),这个解释为将a赋值为0.