面试各种小坑肯(持续更新)

各种小坑

1.小数的equal

计算机表示小数的时候,包括float和double型,都有误差。所以不能使用==来判断他们是否相等。只能判断他们是否在一个很小的误差之中,例如误差在正负0.00000001中就默认为相等。

2.位移运算符

a>>1
表示将a的二进制数向右移动一位,现实意义为除以2.而且位运算等运算速度远比除运算要快的多。
eg:2>>1 = 1 ( 10右移一位为 1)

3.动态开辟数组

在数组大小不确定时,经常使用动态开辟方式。例如开辟一个int的动态数组。

int *p = new int[n];

同时注意的点是,动态开辟后需要delete数组。

delete[] p;

而在问题中,有很多时候需要开辟一个二维数组。而二维数组则不能直接写成下面这样:

int size=50,Column=50;
int (*p)[Column]=new int [size][Column]

这种写法是错误的。编译器不会通过,可以看出这种动态开辟本质上只有对一维数组是真正动态开辟的。
动态开辟二维数组如下:

//动态开辟空间
    int **p = new int*[m]; //开辟行
    for(int i = 0; i < m; i++)
        p[i] = new int[n]; //开辟列
        
//释放开辟的资源
    for(i = 0; i < m; i++)
        delete[] p[i];
    delete[] p;

 

4.鲁棒性

鲁棒性即为健壮性,指程序能够判断输入是否合乎规范要求,并对不合理输入给予合理的处理。
注视代码的鲁棒的性,需要在代码函数的入口处添加验证传入参数的合理性。





posted @ 2019-03-04 16:15  Mask_D  阅读(103)  评论(0编辑  收藏  举报