当时笔试做题的时候,面试官说半个小时以后来拿卷子,我趁机拍了一点,现在回过头再做一遍,也算是一个复习和提高,上图,第三大题没有拍全,等会后面补上。
第一题较简单,需要注意的只有float变量与零值的比较可能会比较坑,其他的都是常规,float变量与零值的if比较应该是:
const EPSINON=0.00001;
if((x>=-EPSINON)&&(x<=EPSINON)); //为什么是0.00001,可以具体查看float变量的精度和有效位数的介绍
第二题除了前三个会,其他都是蒙的,查了资料以后总结如下,发现自己蒙错了最后一题,但最后一题不应该错的。
sizeof是一个操作符(operator),其作用是返回一个对象或类型所占的内存字节数。
1.char str[]="Hello"; sizeof(str)=6;
数组的sizeof值等于数组所占用的内存字节数。
注意:1)当字符数组表示字符串时,其sizeof值将’/0’计算进去。
2)当数组为形参时,其sizeof值相当于指针的sizeof值。
2.char *p = str; sizeof(p)=4;
指针是用来记录另一个对象的地址,所以指针的内存大小当然就等于计算机内部地址总线的宽度。
在32位计算机中,一个指针变量的返回值必定是4。
指针变量的sizeof值与指针所指的对象没有任何关系。
3.int n = 10; sizeof(n)=4; //int类型占用的字节数依系统而定,题目说是Windows NT 32,那应该是4
4.void Func(char str[100]); sizeof(str)=4; //当数组为形参时,其sizeof值相当于指针的sizeof值。
5.void *p=malloc(100); sizeof(p)=4; //此时p为指针类型,在32位系统下占4个字节
第三题&