C/C++知识点分享(5)

作者: 307656af5a04 | 来源:发表于2019-07-01 05:38 被阅读7次

    1.sizeof和strlen之间的区别?

    解析:

    (1)sizeof操作符的结果类型是size_t,它在头文件中的typedef为unsigned int类型,该类型保证能容纳实现所建立的最大对象的字节大小。

    (2)sizeof是运算符,strlen是函数

    (3)sizeof可以用类型做参数,strlen只能用char *做参数,
    且必须是以’\0’结尾的。

    (4)数组做sizeof的参数不退化,传递给strlen就退化为指针。

    (5)大部分编译程序在编译的时候就把sizeof计算过了
    是类型或是变量的长度。

    (6)strlen的结果要在运行的时候才能计算出来,用来计算字符串的长度,而不是类型占用内存的大小。

    (7)sizeof后如果是类型必须加括号,如果是变量名可以不加括号。

    (8)当使用了一个结构类型或变量时,sizeof返回实际的大小。

    (9)数组作为参数传递给函数时传的是指针而不是数组,传递的是数组的首地址。

    (10)计算结构变量的大小就必须讨论数组对齐问题。

    (11)sizeof操作符不能用于函数类型,不完全类型或位字段。


    2.#define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?

    解析:i 为30。


    3.unsigned short hash(unsigned short key) { return (key>>)%256 }

    解析 请问hash(16),hash(256)的值分别是:

    A.1.16;

    B.8.32;

    C.4.16;

    D.1.32


    4.bool double int float.各种类型与0值的比较(概率较大)

    解析:

    请写出 BOOL flag 与“零值”比较的 if 语句。

    if ( flag ) 或者 if ( !flag )
    如下写法均属不良风格,不得分。 if (flag == TRUE)
    if (flag == 1 ) if (flag == FALSE) if (flag == 0)

    请写出 float x 与“零值”比较的 if 语句。

    标准答案示例:
    const float EPSINON = 0.00001;
    if ((x >= - EPSINON) && (x <= EPSINON)

    不可将浮点变量用“==”或“!=”与数字比较,
    应该设法转化成“>=”或“<=”此类形式
    如下是错误的写法。 if (x == 0.0) if (x != 0.0)


    请写出 char* p 与“零值”比较的 if 语句

    标准答案:

    if (p == NULL) 或者 if (p != NULL)

    如下写法均属不良风格

    if (p == 0) if (p != 0) if (p) if (!)

    相关文章

      网友评论

        本文标题:C/C++知识点分享(5)

        本文链接:https://www.haomeiwen.com/subject/rpeicctx.html