CPP专项练习

此文档是CPP专项练习。

应用介绍

### 1.c++中,声明const int i,是在哪个阶段做到 i只可读的?(A)
+ A.编译
+ B.链接
+ C.运行
+ D.以上都不对

解析:const用来说明所定义的变量是只读的。 这些在编译期间完成,编译器可能使用常数直接替换掉对此变量的引用。

### 2.对于条件表达式(k)?(i++):(i--)来说,其中的表达式k等价于(C)
+ A.`k==0`
+ B.`k==1`
+ C.`k!=0`
+ D.`k!=1`

【解释】对于该条件表达式应理解为;k为真时返回i++,否则返回i--,在C语言中表达式的值非0表示真,为0表示假,所以k为真应表示为k!=0.故正确答案为C

### 3.以下关于指针的说法,正确的是(C)

+ `int *const p`与`int const *p`等价
+ `const int *p`与`int *const p`等价
+ `const int *p`与`int const *p`等价
+ `int *p[10]`与`int (*p)[10]`等价

> 解读如下:

+ `int *const p`与`int const *p`等价    前者是指向整数数据的常量指针,指针不可再被修改,后者是指向数据类型为常量的指针p,p所指向的数据值不可更改
+ `const int *p`与`int *const p`等价    const int 同int const
+ `const int *p`与`int const *p`等价
+ `int *p[10]`与`int (*p)[10]`等价    前者是一个数组,数组里存放十个这样的指向整形数据的指针,后者是一个数组指针,p指向存放整形数据的数组

那如何区分这几类呢? 带两个const的肯定是指向常量的常指针,很容易理解,主要是如何区分常量指针和指针常量:

一种方式是看 * 和 const 的排列顺序,比如

+ int const* p; //const * 即常量指针
+ const int* p; //const * 即常量指针
+ int* const p; //* const 即指针常量

还一种方式是看const离谁近,即从右往左看,比如

+ int const* p; //const修饰的是*p,即*p的内容不可通过p改变,但p不是const,p可以修改,*p不可修改;
+ const int* p; //同上
+ int* const p; //const修饰的是p,p是指针,p指向的地址不能修改,p不能修改,但*p可以修改;

### 4.如果x=254,函数返回值为:(B)
```cpp
int func(int x) {
    int countx = 0;
    while (x) {
        countx++;
        x = x & (x - 1);
    }
    return countx;
}
```
+ 6
+ 7
+ 8
+ 0

> 解析如下:

```cpp
x = x&(x-1);//求x的二进制表达式有多少个1
x = x|(x-1);//求x的二进制表达式有多少个0
```

从右向左数,找到第一个1,把1后面的所有的数字都变为0。如x=1000110,x&(x-1)=1000100就是把x右边的第一个1后面的数变为0(包括1)。

如果10000的话,结果就是00000了!这样就可以利用这个特性来计算这个十进制书转化为二进制数有多少个1!

### 5.以下正确的函数原型声明语句是(C)
+ A.`double fun(int x,int y)`
+ B.`double fun(int x;int y)`
+ C.`double fun(int,int);`
+ D.`double fun(int x,y);`

```txt
/C++中的函数原型是指函数声明的形式:
返回值类型 函数名(参数列表);。注意分号是函数原型的组成部分,去掉分号的部分可以称为函数头,是函数定义的起始部分。
这里的参数列表和定义中的列表语法形式相同,其中的参数是形式参数,只需要指定类型,名称可有可无。形式是以下任意一种:
1.空——C中表示接受任意参数,C++中表示接受0个参数;
2.“void”——C中接受0个参数,C++中可省略;
3.“类型名 参数名,”,或者以上形式的重复,但末尾不能有逗号;参数名会被编译器无视,不必和定义一致;
4.“...”——用于C++,表示接受任意参数。
函数原型作为声明,作用是提示编译器,作为标识符的函数名,在声明之后或外部编译单元/库文件存在定义,以抑制编译器遇到这个标识符时产生标识符未定义的编译错误。原型作为语法技术的提出,出发点就在于这个作用,利用它可以方便地定义互相递归的函数,以及引用外部库文件的符号。
```


文件列表(部分)

名称 大小 修改日期
CPP专项练习.md61.52 KB2021-01-04

立即下载

相关下载

[CPP专项练习] 此文档是CPP专项练习。

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部