Skip to content

Latest commit

 

History

History
101 lines (72 loc) · 2.39 KB

C++面试经典100题.md

File metadata and controls

101 lines (72 loc) · 2.39 KB
title toc date tags
C++面试经典100题
false
2017-08-17
Cpp

1. 请填写BOOL , float, 指针变量与“零值”比较的 if 语句

提示:这里“零值”可以是0, 0.0 , FALSE 或者“空指针”。例如 int 变量 $n$ 与“零值” 比较的if语句为:

if ( n == 0 )
if ( n != 0 )

以此类推。

(1)请写出 BOOL flag 与“零值”比较的 if 语句: 标准答案:

if ( flag )
if ( !flag )
``

如下写法均属不良风格,不得分。

if (flag == TRUE) if (flag == 1 ) if (flag == FALSE) if (flag == 0)


(2)请写出 `float x` 与“零值”比较的`if`语句:
标准答案示例:


const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x <= EPSINON)


不可将浮点变量用`==`或`!=`与数字比较,应该设法转化成`>=`或`<=`此
类形式。
如下是错误的写法,不得分。

if (x == 0.0) if (x != 0.0)


(3)请写出 `char *p` 与“零值”比较的 `if` 语句:
标准答案:对于空指针值,用`#NULL` 表示

if (p == NULL) if (p != NULL)


如下写法均属不良风格,不得分。

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




## 2.32位C++程序,计算sizeof的值

![](media/15066079292359/15066082580402.jpg)

`sizeof(str) = 6`; //字符串数组,大小是六个字节(加上'\0'共六个)。
`sizeof(p) = 4`; // 指针的内容就是一个指向目标地址的整数,所以不管指向`char`、`int`还是其他,32位机指针一律是4个字节。

`sizeof(n) = 4`; // `int`型变量是4个字节。
右侧:
`sizeof(str) = 4`; // 这里的str不再是100字节。当数组作为函数的参数进行传递时,也就是作为参数入栈,那么该数组自动退化成同类型的指针。
`sizeof(p) = 4`; // 同样,指针类型一律4个字节。

## 3. long a=0x801010; a+5=?

0x801010 用二进制表示 为:“ 1000 0000 0001 0000 0001 0000” ,十进制的值为 8392720 ,再加 上 5 就是 8392725 。

##4. 用变量 `a` 给出下面的定义

* 一个有 10 个指针的数组,该指针是指向一个整型数的;
* 一个指向有 10 个整型数数组的指针 ;
* 一个指向函数的指针,该函数有一个整型参数并返 回一个整型数 ;
* 一个有 10 个指针的数组,该指针指向一个函数,该 函数有一个整型参数并返回一个整型数 ;

* int * a[10]; 
* int (*a)[10]
* int (*a)(int); 
* int (*a[10])(int)