习题(c++期末知识复习2--)

1.const
(1)区别方法,沿着*号划一条线:
如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;(常量指针)
如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。(指针常量)

(1)指针所指向的内容是常量不可变  
  const int *p = &a;//常量指针  
 *p不可修改 *p = 8;(ERROR)

(2)指针本身是常量不可变
    int * const p = &a //指针常量,
    *p可以修改*p = 8;(OK)p不可以修改 p++(ERROR)p=&b(错误)
    
//指针 int * const a=&b;  这样才对。这种指针不能指向别的地址了,
//但它指向的变量b的值是可另外赋值的

(3)两者都不可变
      const char* const pContent;4const int *p和int const*p等价

const char *ptr;语句的含义是(定义指向字符串常量的指针 )

设int x;,则经过( C )后,语句*px=0;可将x值置为0。
A int * px;
B int const * px=&x;
C int * const px=&x;改常量的值,需要指针常量,离常量近。
D const int * px=&x;

已知:const char *p=”abc”;,则下列语句合法的是(D )
A. p[2]=’k’; B. *p[2]=’k’; C. *p=”xyz”; D. p=”xyz”;
解释:”abc”这个字符串所在空间被定义成只读,所以不能通过p来改变这段空间内容.但p不是只读,所p可以指向另一个字符串空间.

//习题
//ACBDB
//

1.设x和y均为bool量,则x&&y为真的条件是()。
A它们均为真
B其中一个为真
C它们均为假
D其中一个为假

2.以下程序中,new语句干了什么。( )
int** num;
num = new int* [20];
A 分配了长度为20的整数数组空间,并将首元素的指针返回。
C 分配了长度为20的整数指针数组空间,并将num[0]的指针返回。

3.关于delete的描述中,正确的是( )
A. delete是函数 //运算符
B. 它必须用于new返回的指针
C. 对一个指针可以连续使用多次delete
D. delete[]只能删除一维的动态数组//二维的

4.C++对C作了很多改进,从面向过程成为面向对象的主要原因是( )
A. 增加了一些新的运算符
B. 允许函数重载,并允许设置参数默认值
C. 规定函数必须用原形
D. 引进了类和对象的概念

5.关于C和C++的描述中,正确的是( )
A. C是面向过程,C++是纯面向对象

c++是面向对象的语言,但是并不是完全是面向对象的语言C++
支持面向过程、基于对象、和面向对象三种模式 

B. C++是C的超集
C. C++是对C的错误的修改
D. C++和C没有关系

1.将高级语言编写的源程序翻译成目标程序的是( B ) 
A. 解释程序 B. 编译程序     C. 汇编程序  D. 调试程序

C语言属于高级语言,是一种面向过程的语言。BCPL、汇编语言、ALGOL68
程序设计语言的发展经历了机器语言、汇编语言到高级语言的历程。
其中机器语言和汇编语言都属于低级语言

2.在C++语言中,自定义的标识符( )
D. 不能使用关键字并且区分大小写

3.关于字符'\0'的下列描述中不正确的是(C  ) 
A. 常用来作为字符串的结束标 B. 在计算机中存储时占一个字节的内存 
C. 是空格字符的转义表示形式 D. 作为逻辑值使用时等价于逻辑“假”

4.sizeof(double)是一个( A)
A. 整型表达式 B. 双精度表达式 C. 函数调用 D. 不合法

5.下列说法正确的是( D)
A. 隐含类型转换可以从高类型转换为低类型
B. 显式类型转换不可以从低类型转换为高类型
C. 隐含类型转换可以在任何类型之间转换
D. 显式类型转换可以在任何类型之间转换

6. C++语言中用自定义类型定义变量时,(B) 

A. 不能使用类型关键字 B. 可以不用类型关键字 

C. 必须进行进行初始化 D. 不能进行初始化
  1. C++编译器进行编译的过程可详细地分为三个子过程,它们分别是
    ( 预处理过程)、编译过程和连接过程。
    8.枚举变量的取值范围局限于定义该枚举变量的枚举类型的(枚举标识符)
9.若有定义:int a[5],*p=a;,则不合法的表达式是(B ) 
A. p=p+1 B. a=a+1 C. p-a D. a+2 

10.关于函数的说法中,错误的是(B ) 
A. 函数名代表函数的入口地址 

B. 函数指针就是返回指针值的函数 
指针函数是指带指针的函数,即本质是一个函数int *f(x,y);
//f距离函数近,是指针函数,本质是函数
函数指针是指向函数的指针变量,即本质是一个指针变量。int (*f) (int x); 
// 声明一个函数指针 

 C.函数指针可以作为另一个函数的参数 
 .D.32位系统中,函数指针变量的存储空间是4个字节

1.在C++程序中,对象之间的相互通信可以通过:B
A.继承实现 B.调用成员函数实现
C.封装实现 D.函数重载实现

~程序由对象自身或之间产生的消息传递来完成相应的功能,这里的消息传递实际上就是调用成员函数。

~在C++中(类即)是封装的实现。进一步的封装是通过类的存取权限实现的

~封装不是绝对的,是有可公开、可私有、可保护的分类封装,对于可公开的Method即是消息传递的成员函数

~逻辑运算符两侧运算对象的数据类型 可以是任何类型的数据

~数组的大小是固定的,所有数组元素的类型必须相同

~ 操纵符的作用域直到(下一次改变 )为止,(其中setw除外)。

~名字空间的作用?有点类似于类,不同的命名空间下可以有相同名字的变量或函数

~引用调用的调用方式是指(形参是引用,实参是变量 ) 

~ 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择(内联函数)函数体不能含有循环语句  函数体不能含有递归语句 

~采用重载函数的目的在于使用方便,提高可读性 

2.1.fun(a+b, 3, max(n-1, b));其中实参的个数是( 3 )
逗号把实参分割开来 你看到的a+b,max(n-1,b)都是计算出来的值作为实参

3.关于引用的叙述中,不正确的是(c )
A. 每一个引用都是其所引用对象的别名,因此必须初始化
B. 形式上针对引用的操作实际上作用于它所引用的对象
C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D. 不需要单独为引用分配存储空间

4.若有定义:int *p=new int;,则下列说法中不正确的是(d) 
int *p = new int[size]// 申请一个长度为size的整型数组
A. 声明了一个指向整型变量的指针p 
B. 可以用*p来表示所指向的整型变量 
C. 通过运算符new,分配了一个整型数据的空间,并将其起始地址赋给指针p 
D. 系统为指针变量p分配了一个整型数据的存储空间 

5下列关于函数参数的描述中错误的C
A. 函数的形参在定义时不占用内存的存储单元 
B. 在函数的传值调用中将用实参来初始化形参 
C. 在函数的传址调用中形参需要分配存储空间 
D.在函数的传引用调用中形参是实参的别名 

6.下列关于内联函数的说法中不正确的是(D )
A. 内联函数体内不能有循环语句
B. 内联函数体内不能有switch语句
C. 内联函数必须先定义后调用
D. 内联函数在被调用时发生控制转移

  1. 关于递归函数的说法中,不正确的是(C )
    A. 递归函数可以改写为非递归函数
    B. 递归函数应有递归结束的条件
    C. 解决同一个问题的递归函数的效率比非递归函数的效率要高
    D. 递归函数往往更符合人们的思路,程序更容易理解

8.下列关于函数的描述中错误的是(D )
A. 函数形参的作用域是该函数的函数体
B. 所有的函数在定义它的程序中都是可见的
C. 调用系统函数时,要先将该系统函数的原型说明所在的头文件包含进去
D. 系统函数及其库不是C++语言所必须的

  1. 关于指针运算的说法中,不正确的是( D)
    A. 两个指针在一定条件下可以进行相等或不等的运算
    B. 可以用空指针赋值给指针变量
    C. 一个指针可以加上两个整数之差
    D. 两个指针在一定条件下可以相加

10.在函数说明中,不必要的是(d )
A. 函数的类型
B. 函数参数的类型
C. 函数的名字
D. 函数参数的名字

~若函数没有返回值,则该函数的类型应被说明为(void~若定义函数时没有指定返回类型,则系统认为该函数的返回类型是 (  int )  类型。 
~内联函数的展开、重载函数的确定均在 ( 编译 ) 阶段进行。 
~函数名相同,但对应形参表不同的一组函数称为(重载函数 ) ,参数表不同是指 类型 不同或 参数个数 不同。(顺序)

~C++中,关于默认形参值,正确的描述是应该先从右边的形参开始向左边依次设置   

有以下说明语句,则调用函数的正确语句是(B )。

int b[4][5];
void fun( int * ,int n);

(A)fun(b, 20);
(B)fun(b[0], 20);
(C)fun(b[0][0], 20);
(D)fun(&b, 20);

对函数原型为int& min(int& a, int& b);的函数,下列语句块哪个是错误的:C
A. int x=10,y=5;min(x,y)=100;返回的是引用,引用可以作左值,
B.int x=10,y=5, z; z=min(x,y+=x);
C. int x=10,y=5; min(x,10)=y; 引用必须是变量的别名
D. int x=10,y=5; x=min(x,y):

关于函数模板的叙述中,正确的是( AD)
A. 函数模板实际上是函数类型和形参类型不具体指定的通用函数
B. 函数模板可以用于描述函数体不同的一系列函数
C. 函数模板可以用于描述参数个数不同的一系列函数
D. 函数模板定义中typename和class的作用相同

关于函数模板的说法中,正确的是(A )
A. 函数模板中typename和class用于定义不同的虚拟类型名
B. 能被函数模板代替的函数必须具有相同个数的形参
C.函数模板的虚拟类型名(即指的函数模板的类型参数)由C++系统自动确定
D. 函数模板的虚拟类型名是在运行阶段确定实际类型的

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值