美图摄影梦想每天正能量

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

2019-07-01  本文已影响7人  307656af5a04

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 (!)

上一篇 下一篇

猜你喜欢

热点阅读