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 (!)
网友评论