C++简答题复习.docx
- 文档编号:5817188
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:16
- 大小:30.86KB
C++简答题复习.docx
《C++简答题复习.docx》由会员分享,可在线阅读,更多相关《C++简答题复习.docx(16页珍藏版)》请在冰豆网上搜索。
C++简答题复习
第一章概述
1、简述C++的发展简况。
答:
C++语言是从C语言发展而来的,C语言是一种编译型的面向过程的程序设计语言,它最早是从英国剑桥大学一个名叫MartinRichards的学者在60年代开发的BCPL(即BasicCombindProgrammingLanguage)语言的基础之上发展而来的。
BCPL语言是MartinRichards在开发系统软件时,作为描述性语言而使用的一种程序设计语言。
1970年,美国Bell实验室的Ken?
Thompson在软件开发工作中,继承和发展了BCPL语言的许多特点,进一步提出了一种叫“B语言”的语言。
随后,在美国Bell实验室实现的更新型的小型机PDP-11的UNIX操作系统的研发工作中,于1972年推出了一种新型的程序语言—C语言,该语言一经推出就在国际上广泛流行。
20世纪80年代,由于软件工程的需要,面向对象程序设计方法在软件设计领域引起了普遍的重视,AT&TBell实验室的计算机科学家BjarneStroustrup结合流行的C语言的所有成分,开发出了面向对象的程序设计语言C++。
2、C++语言有那些主要特点?
答:
C++语言具有以下主要特点:
(1)C++语言是一个中级的程序设计语言。
(2)C++是一个结构化的程序设计语言。
(3)C++是一种面向对象的程序设计语言。
(4)C++语言是一个功能齐全的编程语言。
(5)C++语言是一种移植性很好的编程语言。
3、编写的C++语言的程序主要由那些基本组成部分构成?
答:
C++语言的程序主要由以下几个基本组成部分构成:
(1)预处理命令:
C++语言提供了三类预处理命令:
宏定义命令(define)、文件包含命令(include)、条件编译命令(if~else~endif),
(2)输入/输出语句(Input/Output语句,简称I/O语句):
C++语言的程序中总是少不了输入和输出的语句,实现与程序内部的信息交流。
(3)函数(Function):
C++的程序是由若干个文件组成的,每个文件又是由若干个函数组成,因此,可以认为C++的程序就是函数串,即由若干个函数组成,函数与函数之间是相对的,并且是并行的,函数之间可以调用。
(4)语句(Statement):
语句是组成程序的基本单元。
每个函数都是由若干条语句组成的。
(5)变量(Variable):
变量是通过说明语句来定义的,多数程序都需要说明变量和使用变量。
(6)其他:
除了以上讲述的5个部分以外,还有其他组成部分。
例如,符号常量和注释信息等也是程序的一部分。
C++程序中尽量把有些常量定义为符号常量,而在C++的程序中使用符号常量,该符号常量代表着某个确定的常量值。
4、C++语言编写的程序代码有那些格式特点?
答:
C++语言编写的源代码程序的格式具有以下特点:
(1)C++语言的关键字是小写字符构成的,习惯上也使用小写字母书写程序;
(2)大多数语句结尾必须用";"作为终止符,否则C++不认为该语句的结束;
(3)每个程序必须有一个且只能有一个主函数,其名称为main()的函数;
(4)每个函数的函数体(包括主函数和每个子函数)必须用一对花括号"{"和"}"括起来;
(5)一个较完整的程序文件大致含有:
包括文件程序段(一组#include<*.h>语句)、函数说明部分、全局变量说明、主函数和若干个子函数组成。
在主函数和子函数中又包括局部变量定义、库函数调用、流程控制语句、用户函数的调用语句等;
(6)注释部分包含在"/*"和"*/"之间或"//"之后,在编译时它将被C++编译器忽略;
(7)像其它一些语言一样,C++的变量在使用之前必须先说明其数据类型,未经说明的变量不能使用。
说明变量类型应在可执行语句前面,如上例main()函数中的第一条语句就是变量说明语句,它必须放在所用的执行语句前面。
(8)在C++语言中,大小写字母是有区别的,相同字母的大小写代表不同的变量;
5、编写C++语言程序,在书写格式上应该遵从哪些基本原则?
答:
为了使程序结构更加清楚、易于阅读、维护和修改,在书写格式上应该遵从以下基本原则:
(1)一般一行只写一条语句;
(2)一条复杂语句采用多行,如分支语句和循环语句;
(3)遇到嵌套语句应向后缩进,必要时对程序增加适当的注释行。
6、什么叫关键字?
什么叫标识符?
答:
关键字(Keyword)也叫保留字(ReservedWord)。
所谓关键字就是指已被C++语言本身使用,不能作为其它用途使用的单词。
标识符是用户为程序中各种需要命名的"元素"所起的名称。
第二章数据与运算
1、什么数据?
什么叫数据类型?
答:
数据是指能输入到计算机中,并能被计算机处理和加工的对象。
数据类型是对系统中实体的一种抽象,它描述了某种实体的基本特性,不同类型数据的表示、所占存储空间的大小以及定义在其上的操作是不同的。
2、C++语言有哪些基本数据类型?
其值域是什么?
类型名称
长度(字节)
值域
char
1
-128~127或0~255(使用/J编译选项)
signedchar
1
-128~127
unsignedchar
1
0~255
bool
1
非零(true),零(false)
short(signedshort)
2
-32768~32767
unsignedshort
2
0-65535
int(signedint)
4
-2147483648~2147483647
unisngedint
4
0~4294967295
long(signedlong)
4
-2147483648~2147483647
unisngedlong
4
0~4294967295
float
4
1.175494351e-38~3.402823466e+38(正数)
double
8
2.2250738585072014e-308~1.7976931348623158e+308(正数)
3、C++语言有哪些常量?
请给出实例。
答:
C++语言共有六种常量,分别如下:
(1)整型常量
整型常量通常简称为整数。
C++语言的整数可以是十进制数、八进制数和十六进制数。
例如,十进制的数值3356可以有下列三种不同的表示形式:
十进制数3356;八进制数06434;十六进制数0xd1c
(2)浮点常量
浮点常量又称为实数,一般含有小数部分。
例如,
-0.6523,.08765,1234.0,9.9999,98.,5.544,2355.876554都是一般形式的实数。
(3)字符常量
所谓字符常量是指一个单一字符,其表示形式是由两个单引号包括的一个字符。
例如,'A','a','Q','0','9','+',':
','?
','$'都是字符常量。
(4)字符串常量
所谓字符串常量是指用双引号括起来的一串字符来表示的数据
下面给出几个字符串常量的例子:
"Hello!
","AGraduateStudent","9","BillGates","李四"
"北京海淀学院路29号","姓名:
","******************.cn",""
(5)标识常量
所谓标识常量是指用标识符代替常量使用的一种常量,其名称通常是一个标识符。
标识常量的一般说明形式为:
#define<标识常量名称><常量>
例如,
#defineMAX50
#definePI3.1415926
#defineERROR-1
其中,MAX、PI以及ERROR都是标识常量,它们代替的常量分别是50、3.1415926、和-1。
(6)换码序列
所谓换码序列是用反斜线\后面跟有一个字符或者一个或不超过3个的数字来表示的
控制代码的换码序列如下表所示,它们的表示形式是在反斜线\后面跟有一个小写英文字母。
例如,'\a','\\','\'','\056','\x05a'
4、什么叫说明语句?
怎样说明的变量为局部变量?
怎样说明的变量为全局变量?
答:
一般来说,变量在使用以前,必须说明才能使用。
用来说明已有类型的变量的语句称为变量说明语句。
变量说明的一般形式是:
<存储类型><数据类型><变量名>;
在上面变量说明的式子里,<变量名>之后有一个分号“;”意味着它是一个语句,该语句我们通常称为变量的说明语句。
在函数体或程序段内说明的变量只能在定义它的函数体内或程序段内可以访问,这种变量通常称为局部变量;在函数体外说明的变量可以在说明它的文件中所有函数里或程序段中访问,也可以通过extern被其它文件中的函数或程序段访问,这种变量通常称为全局变量。
5、说明变量时有哪些存储类型?
其含义是什么?
答:
C++语言支持四种存储类型:
auto,register,static和extern。
(1)auto称为自动型也称为堆栈型,用auto存储类型说明的变量都是局部于某个程序范围内的,只能在某个程序范围内使用,通常在函数体内或函数中的复合语句里。
(2)register称为寄存器型,使用register关键词说明的变量主要目的是想将所说明的变量放入CPU的寄存器存储空间中,这样可以加快程序的运行速度。
(3)static称为静态存储类型,在C++语言中,既可以在函数体内,也可在函数体外说明static存储类型的变量。
在函数体内说明的static存储类型的变量也是一种局部变量,与auto最大不同点是:
static存储类型的变量在内存中是以固定地址存放的,而不是以堆栈方式存放的;只要整个程序还在继续运行静态变量就不会随着说明它的程序段的结束而消失,它下次再调用该函数,该存储类型的变量不再重新说明,而且还保留上次调用存入的数值。
(4)extern称为外部参照引用型,使用extern说明的变量是想引用在其它文件中函数体外部说明的变量。
当变量在一个文件中的函数体外说明,所有其他文件中的函数或程序段都可引用这个变量。
这种变量的作用域是所有的函数和程序段,一般用于在函数之间传递数据。
6、什么叫常量化变量?
其作用是什么?
所谓常量化变量是指将一个变量说明为一个常量。
作用:
当一个变量被说明为常量时,那么该变量在程序执行过程中其值是不能改变的。
也就是说,不能再向常量化的变量再赋值。
因此,常量化变量在说明时就必须赋给一个数值。
常量化的变量基本上和常量一样。
7、什么叫数组?
说说short型的数组与char型的数组的异同点。
答:
所谓数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素。
数组中各元素的数据类型要求相同。
数组可以是一维的,也可以是多维的。
char型的数组由包含ASCII字符集中的字符(英文字母、数字、标点符号以及某些特殊符号)的整数类型组成的数组。
short型的数组是由short数据类型组成的数组。
类型short(或shortint)是一种短整数类型,它占用字节的长度大于类型char,小于或等于类型int。
8、什么叫表达式?
什么叫表达式语句?
答:
所谓表达式是指由运算符、运算量和标点符号组成的有效序列,其目的是用来说明一个计算过程。
表达式可以独立形成语句,该语句称为表达式语句
9、什么叫左值?
什么叫右值?
答:
所谓左值是指能够出现在赋值表达式左边的表达式。
所谓右值是指只能出现在赋值表达式的右边的数值。
第四章指针
1、什么叫内存单元的地址?
什么叫指针?
答:
在计算机内部的存储器(简称内存)中,每一个字节单元,都有一个编号,称为地址。
内存单元的编号,称为内存单元的地址。
在C++语言中,内存单元的地址称为指针。
2、什么叫指针变量?
什么叫指针的目标?
答:
专门用来存放地址的变量,称为指针变量(pointervariable)。
指针指向的内存区域中的数据称为指针的目标。
3、什么叫空指针?
其作用是什么?
答:
所谓空指针就是指针变量的内容为零的状态。
4、指针运算的实质是什么?
答:
指针运算是以指针变量所存放的地址量作为运算量而进行的运算。
因此,指针运算的实质就是地址的计算。
5、指针有哪些运算?
请枚举这些计算。
答:
指针运算的种类是有限的,它只能进行算术运算、关系运算和赋值运算。
6、什么叫数组的指针?
什么叫指针数组的指针?
答:
在C++语言中,数组的指针是指数组在内存中的起始地址。
指针变量数组和普通的一般变量数组一样,编译系统在处理指针数组说明时,按照指定的存储类型为它在内存中分配一定的连续存储空间,这时指针数组名就表示该指针数组的存储首地址,即指针数组的指针。
7、什么叫二级指针变量?
什么叫多级指针变量?
答:
对于指向处理数据的指针变量称为一级指针变量,简称一级指针。
而把指向一级指针变量的指针变量称为二级指针变量,简称二级指针。
我们把一个指向指针变量的指针变量,称为多级指针变量。
8、new运算符的作用是什么?
delete运算符的作用是什么?
答:
运算符new主要用于分配内存,并获得分配到的内存的首地址,通常需要将其赋给相应数据类型的指针。
如果程序中不再需要由new分配的内存空间时,用运算符delete释放这些空间。
9、什么叫引用?
答:
所谓引用是指给一个变量或一个数组起一个别名。
使用引用进行运算的实质是操作原来的变量或数组本身的另一个使用名称。
10、const型指针有几种形式?
其作用是什么?
答:
const型指针主要有下面三种形式:
(a)常量化指针目标表达式:
常量化指针目标是限制通过指针改变其目标的数值。
(b)常量化指针变量:
常量化指针变量,使得<指针变量>的地址值不能修改。
但可以通过*<指针变量名称>可以修改指针所指向变量的数值。
(c)常量化指针变量及其目标表达式:
常量化指针变量及其目标表达式,使得既不可以修改<指针变量>的地址,也不可以通过*<指针变量名称>修改指针所指向变量的值。
11、什么叫void型指针?
其作用是什么?
void型的指针变量是一种不确定数据类型的指针变量,它可以通过强制类型转换让该变量指向任何数据类型的变量或数组。
第五章函数与宏
1、请给出函数概念的基本描述。
答:
函数就是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空值。
2、什么叫函数原型?
答:
函数原型是指由函数定义中抽取出来的能代表函数应用特征的部分,包括函数的数据类型、函数名称、形式参数说明。
3、什么叫函数的实参?
什么叫函数的形参?
答:
实参是在调用函数过程中传递给被调用函数的参数;形参是被调用函数接受调用函数传递过来的数据的参数。
4、请说出函数参数为一般变量的复制传递方式、地址传递方式和引用方式的异同点。
答:
复制传递方式是实参的数据拷贝给了形参变量,实参和形参是具有相同数据类型但存储空间是不同的两组空间。
在复制传递方式下,被调用函数里对形参的操作不能改变实参的内容。
地址传递方式和复制传递方式正好相反,用函数的参数本身传给被调用函数。
被调用函数中对形参的操作将直接改变实参的值。
调用函数将实参的地址传送给被调用函数,被调用函数对该地址的目标操作即对实参本身的操作。
按地址传递,实参为变量的地址,而形参为同类型的指针。
引用方式和地址传递方式的效果一样,但引用更直接、更方便。
按引用传递,实参为变量,形参为同类型的引用。
采用引用方式实参和形参使用的是相同的内存空间,只是名称不同而已。
5、数组在函数间传递形式有哪些?
并给以比较和解释。
答:
数组在函数间的传递形式有复制传递方式、地址传递方式、引用方式和全局数组传递方式。
函数与函数之间数组的复制传递方式是调用函数将实参数组传递给被调用函数形参,形参接收是实参的地址。
函数与函数之间数组的地址传递方式是将调用函数中的实参数组的起始地址传递给被调用函数的指针变量形参。
被调用函数中对形参地址的目标操作,相当于对实参本身的操作,将直接改变实参数组的值。
地址传递方式,实参应该为数组的指针,而形参应为同类型的指针变量。
另外,数组的地址传递方式不仅要把实参数组的指针作为参数传递给函数,同时还需要传递数组的长度。
与引用方式不同的是被调用函数的形参应声明为数组同类型的指针变量。
函数与函数之间数组的引用传递方式需将被调用函数的形参说明为数组的引用形式。
在被调用函数中,对形参进行操作就是对实参数组的直接操作。
数组的引用方式和地址传递方式的作用效果基本一样,但引用更直接、更方便。
按引用方式传递数组,形参为实参同类型的数组引用。
但引用数组名不是指针变量,不能作为左值。
6、什么叫函数指针?
什么叫指针函数?
答:
函数指针是一个函数执行代码的起始地址。
指针函数是指一个函数的返回值为地址量的函数。
7、什么叫内联函数?
答:
内联函数是类声明体里定义的函数或在类的实现部分定义的、其前用inline修饰的函数;它将简单的函数(其内不能有循环语句和开关语句)"内嵌"到调用他的程序代码中,这样做的目的是为了节省了调用函数的开销。
8、什么叫函数重载?
答:
函数重载是指使用一个函数名称定义了多个完成不同功能的函数,这些函数的输入参数类型或个数不一样,相应的函数类型也有可能改变。
9、什么叫预编译语句?
在C++程序的源代码中可以包括各种编译用的命令语句,这些语句都称为预编译语句。
10、什么叫宏?
谈谈带参数宏与内联函数之间的异同点.
答:
宏是指定义一个标识符来代替一个字符序列。
内联函数和宏都是在程序出现的地方展开,是在调用该函数的程序处或应用宏处将它展开。
但内联函数可以多行的程序段,而宏通常是单行代码段。
11、什么叫递归函数?
简述其执行过程。
答:
递归函数是指一个函数的函数体中直接调用或间接调用了该函数自身的函数。
递归函数调用的执行过程分为两个阶段:
(1)递推阶段:
从原问题出发,按递归公式递推,从未知到已知,最终达到递归终止条件。
(2)回归阶段:
按递归终止条件求出结果,逆向逐步代入递归公式,回归到原问题求解。
第六章自定义数据类型
1、什么叫结构体数据类型?
答:
结构体数据类型是由若干个数据成员组成的构造类型,每个成员可以是一个基本的数据类型,也可以是一个已经定义的构造数据类型,各个成员占据不同的存储空间。
2、什么叫联合体数据类型?
答:
联合体数据类型是一种混合数据使用的数据类型,它的各个成员虽然是存储不同数据类型的数据,但使用时改变其一个数据成员的数值将会影响其它数据成员的数值,各个成员共享其占用空间最多的成员所分配的存储空间。
3、在C++语言中,请说明结构体和联合体的异同点。
答:
结构体数据类型的变量可以同时存储int、long、char和double型等已有数据类型的数据,这些数据使用不同的存储空间,而联合体虽然表面上可以存储int、long、char或double等已有数据类型的数据,但它们共享其占用空间最多的成员所分配的存储空间,对某个成员赋值将影响其它成员的数值。
4、结构体数据作为参数在函数间传递有哪几种方式?
请指出它们的异同点。
答:
结构体作为参数在函数之间进行传递主要有下列三种方式:
复制传递方式:
把调用函数中结构体实参的值复制给被调用函数的形参构体
地址传递方式:
将调用函数中实参结构体的地址传递给被调用函数形参的结构体指针。
引用方式:
被调用函数的形参应该说明为引用结构体变量形式。
实际上,它是为实参结构化起一个别名。
另外,还可以通过全局变量的方式在函数间进行数据传递,但这种方式不好,增加函数之间的耦合性。
地址传递方式要比复制方式效率高。
结构体复制传递方式需要对实参做一个备份,它把一个结构体变量作为参数传递,但要将结构体全部成员值一个一个传递,费时间又费空间,开销大。
如果结构体的成员较多,则程序运行效率会大大降低,而采用地址传递方式将结构体变量的地址作为函数参数比较好,能提高运行效率。
复制传递方式不影响调用函数实参的数值,而地址传递方式有可能影响实参的数值。
第七章类与对象
a)什么叫面向对象的程序设计语言?
什么叫类?
什么叫对象?
什么叫消息?
答:
在程序设计语言中,面向对象是指采用抽象、封装、继承、多态等程序设计的方法。
因此,具有抽象、封装、继承、多态等特性的编程语言称为面向对象的程序设计语言。
类实际上是一种抽象的数据类型,它将完成某特定功能所用到的数据和对数据的操作(即函数)封装在一起。
对象是指具有某些属性和功能的单个个体。
消息是对象之间相互请求或相互协作的途径,是要求某个对象执行其中某个功能操作的规格说明。
2、结构化程序设计方法存在什么问题?
答:
结构化程序设计方法主要存在以下问题:
1)软件重用性差:
重用性是指同一软件不经修改或稍加修改就可多次重复使用的性质。
软件重用性是软件工程追求的目标之一。
2)软件可维护性差:
软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。
在软件开发过程中,始终强调软件的可读性、可修改性和可测试性是软件的重要的质量指标。
实践证明,用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。
3)开发出的软件不能满足用户需要:
用传统的结构化方法开发大型软件系统涉及各种不同领域的知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。
3、什么叫抽象?
什么叫分类?
答:
从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。
抽象是形成概念的必须手段。
分类就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。
4、请简述结构体、联合体和类三种类类型的异同点。
答:
三种类类型的异同点见下列表格:
类型
结构体
联合体
类
关键字
struct
union
class
访问权限缺省
数据或函数访问公有
数据或函数访问公有
数据或函数访问私有
成员种类
数据和函数
数据和函数
数据和函数
初始化方式
可以直接初始化
可以直接初始化
只能间接初始化
struct结构体类型和class类类型都可以封装数据和操作,具有派生性、隐藏性和多态性。
而联合体不具有派生性,但具有隐藏性和多态性。
5、什么叫根类?
答:
根类是没有从其它类派生而创建的类类型。
实际上,根据class类类型定义的一般形式,[:
<基类型列表>]是一个可缺省的项;如缺省将定义一个根类。
6、类定义通常分为两部分,主要指什么?
答:
类的定义一般分为说明部分和实现部分,说明部分放在类定义体内,用来说明该类中的数据成员和函数成员的类型和名称,是类的外部接口;实现部分常放在类体外,用以给出说明部分中声明的成员函数的定义,是类的内部实现。
7、在类定义中,说明成员的访问权限的public、private和protected三个关键字的作用是什么?
请分别简述之。
答:
在类定义体里,使用了private、protected、public三个关键字是用来说明数据成员和函数成员的访问权限,private说明私有成员,该类成员只能被自己的成员函数或友元访问;protected说明保护型的成员,可以被自己的成员函数或友元访问,也可以被派生类的函数成员访问;public说明公有成员,该类成员都可以通过对象被访问的。
8、什么叫内联函数?
什么叫外联函数?
答:
将说明部分和成员函数实现部分合并在类定义体内,即将该函数定义为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 答题 复习