C++笔试基础题(2)

22. 条件语句有哪几种形式?

答:条件语句分为if,if...else...和if...else if...else 3种形式。

23.条件语句如何嵌套、如何匹配else字句?
答:条件语句可以在不同的执行语句作用域内进行嵌套,else字句通过{}
划分作用域来实现匹配。
24.for循环语句的计算顺序是什么?
答:for语句的执行顺序是先从左至右执行循环条件语句,如果循环条件语句
的判断语句为true,则在循环条件语句执行之后继续执行一次循环执行语句,
然后再回到循环条件语句。如果循环语句判断条件为false,则停止循环。
25.while循环与do-while循环有什么区别?
答:while循环与do-while循环的主要区别在于,如果循环条件语句为false,
while语句不会执行循环,而do-while保证循环体执行一次。
26.break语句与continue语句有什么区别?
答:continue语句只能出现在循环语句中,而break语句可以出现在switch
语句中和循环语句中,continue语句不会退出循环,只会终止当次执行循环体
并且进入下一次循环体的执行,break语句会退出整个循环语句。
27.switch语句的执行顺序是什么?
答:如果表达式与其中一个case标号的值匹配,则程序将从该标号后面的
第一个语句开始依次执行各个语句,直到switch结束或遇到break语句为止。
如果没有发现匹配的case标号,则在存在default语句时执行default语句
,否则程序从switch语句后面的第一条语句继续执行。
28.如何在switch语句内部定义变量
答:在switch结构中科院在最后一个case标号或default标号后面定义变量,
或者引入块语句来定义变量。
29.什么是递归?
答:一个过程或函数直接或间接调用自己本身,这种过程或函数叫递归
过程或递归函数。
30.汉诺塔问题
答:汉诺塔问题是程序设计中的经典递归问题,它在说明递归算法时有
不可替代的重要性,它可以形象完整的解释递归算法的调用。汉诺塔问题
也可以使用非递归算法来解决。
31.什么是标准输入输出流?
答:对标准输入设备和标准输出设备的输入输出简称为标准I/O,对在外存
磁盘上文件的输入输出简称为文件I/O,对内存中指定的字符串存储空间的
输入输出简称为串I/O。标准输入流是从标准输入设备(键盘)流向程序的
数据。标准输出流是流向标准输出设备(显示器)的数据。
32.如何重载输入输出?
答:重载就是基于不同参数表让同一个名称的函数定义不同的函数。重载
在相同的范围中为一个给定函数名称提供了多种定义。委托变压器依据调
用该函数的参量选择合适的函数或运算符的版本。重载可以为输入输出提
供更加简洁的代码。
33.宏定义与操作符的区别?
答:宏定义是C++语言提供的3种预处理功能的其中一种,这三种预处理
分别是:宏定义,文件包含,条件编译。宏定义它是一种替换操作,不
做计算和表达式求解,不占用内存和编译时间。运行时出现的不正常,它可
能会导致系统无法正常运行,甚至停止运行等严重的情况,编程者需要实
现好的异常处理来保证程序的稳定性。
34.include有哪几种使用方式,有什么区别?
答:#include指示只接受一个参数就是头文件,预处理器用指定的头文件
的内容代替每个#include。Include有两种使用方式,#include<>和
#include "",其中#include<>是使用标准头文件,#include""是使用
自定义头文件。
35.包含头文件时,如何查找头文件?
答:标准头文件在系统文件目录下查找,用户自定义文件会一次在用户目录,
c++安装目录和系统文件中查找。
36.如何分配和释放存储空间?
答:在C++中,使用new和delete来分配和释放存储空间。
37.虚函数与纯虚函数的区别?
答:纯虚函数是虚函数的一个子集。
38.如何使用纯虚函数?
答:纯虚函数用来定义没有意义的实现,用于抽象类中需要交给派生类
具体实现的方法。
39.什么是指针?
答:指针式用来存储内存地址的变量,它指向单个对象的地址,除了void
指针类型以外。指针的数据类型与所指向地址的变量数据类型需保持一致。
40.如何初始化指针并对其赋值。
答:指针的初始化就是给指针赋初值,&符号可以用来获取对象的内存地址,
并且赋值给指针变量。指针变量的初始化和赋值都可以通过运算“=”来实现。
41.是否可以确定指针指向一个对象?
答:指针用于指向对象,一个指针只指向一个对象的内存地址。
42.如何使用指针操作数组?
答:在C/C++中,指针对于数组的操作是通过数组的地址,通常是第一个
数的地址赋值给指针来进行操作的。指针可以操作1维和多维数组。
43.const对象的指针和const指针的区别
答:const指针的值不可以被修改,但是可以使用该指针修改它所指向
对象的值。指针所指对象的值能否修改完全取决于该对象的类型,而指
向const量的指针不可以修改所指向的const量的值,但是自身可以被重

新赋值。

44.他们有什么区别? 
char *const p;
char const *p
const char *p

答:
char *const p; //常量指针,p的值不可以修改
char const *p;//指向常量的指针,指向的常量值不可以改
const char *p; //和char const *p

45.一个32位的机器,该机器的指针是多少位
答:指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。

46.关键字volatile有什么含意?并举出三个不同的例子?
答:提示编译器对象的值可能在编译器未监测到的情况下改变。

47.c和c++中的struct有什么不同?
c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private

48.纯虚函数如何定义?使用时应注意什么?
答:virtual void f()=0;是接口,子类必须要实现

49.数组和链表的区别?

答:
数组:数据顺序存储,固定大小
连表:数据可以随机存储,大小可动态改变

50.C++中为什么用模板类。
答:(1)可用来创建动态增长和减小的数据结构
(2)它是类型无关的,因此具有很高的可复用性。
(3)它在编译时而不是运行时检查数据类型,保证了类型安全
(4)它是平台无关的,可移植性
(5)可用于基本数据类型
51.变量的声明和定义有什么区别
为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是
只在一个地方定义。加入extern修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。
52.sizeof和strlen的区别。
答:sizeof和strlen有以下区别:
(1)sizeof是一个操作符,strlen是库函数。
(2)sizeof的参数可以是数据的类型,也可以是变量,而strlen只能以结尾为‘\0‘的字符串作参数。
(3)编译器在编译时就计算出了sizeof的结果。而strlen函数必须在运行时才能计算出来。并且sizeof计算的是数据类型占内存的大小,而strlen计算的是字符串实际的长度。
(4)数组做sizeof的参数不退化,传递给strlen就退化为指针了。
 
53.C语言的关键字static 和C++ 的关键字static 有什么区别
答:在C中static用来修饰局部静态变量和外部静态变量、函数。而C++中除了上述功能外,还用来定义类的成员变量和函数。即静态成员和静态成员函数。
54.C中的malloc和C++中的new有什么区别
答:malloc和new有以下不同: 
(1)new、delete 是操作符,可以重载,只能在C++中使用。
(2)malloc、free是函数,可以覆盖,C、C++中都可以使用。
(3)new 可以调用对象的构造函数,对应的delete调用相应的析构函数。
(4)malloc仅仅分配内存,free仅仅回收内存,并不执行构造和析构函数 
(5)new、delete返回的是某种数据类型指针,malloc、free返回的是void指针。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值