c/c++错题整理1

1.以 下 for 循 环 的 执 行 次 数 是()。

for(x=0,y=0;(y=123)&&(x<4);x++);
		A.是无限循环
		B.循环次数不定
		C.4次
		D.3

正确答案: C 你的答案: A (错误)
注意y=123是赋值语句

2.以下程序

main()
{char
str[][10]={"China","Beijing"},*p=str;
  
printf("%s\n",p+10);
}

程序运行后的输出结果是( )。

A.China
B.Bejing
C.ng
D.ing

正确答案: B 你的答案: A (错误)
str定义为一个二维字符数组,即为str[2][10],p指向这个数组的首指针,那么p+10指向这个数组第二维的首指针,所以输出字符串为Beijng。

3.有以下程序

#include<iostream> 
using namespace std; 
class Point 
{public:
Point(float xx=0, float yy=0)
{X=xx;Y=yy;}
float GetX() {return X;}
private:
float X,Y;};
class Rectangle: private Point
{public:
Rectangle(float x, float y, float w, float h):Point(x,y)
{W=w;H=h;}
float GetX() {return ___________;}
float GetH() {return H;}
float GetW() {return W;}
private:
float W,H;};
int main()
{   Rectangle r(1,2,3,4);
cout<<r.GetX();
return 0;} 

请为横线处选择合适的程序使得程序的运行结果是1( )

A.Y
B.Point::GetX()
C.GetX()
D.X

正确答案: B 你的答案: C (错误)
私有成员调用,需要加上该私有成员的的归属类
注意X是Point的私有成员变量

struct Date
{
    char a;
    int b;
    int64_t c;
    char d;
};
Date data[2][10];

在64位系统上,如果Data的地址是x,那么data[1][5].c的地址是()
A.X+195
B.X+365
C.X+368
D.X+215

正确答案: C 你的答案: A (错误)
结构体成员地址对齐
a b c d
1+(3)+4+8+1+(7)= 24,()内表示为了满足对齐填充的大小。
&data[1][5].c = x+1024+525+1+(3)+4=368。

5.未初始化的全局变量放在下面哪个段中()

A.text
B.data
C.variable
D.bss

正确答案: D 你的答案: C (错误)
text段在内存中被映射为只读;
variable:优化器在用到这个变量时必须每次都小心地重新读 取这个变量的值;
data包含静态初始化的数据,所以有初值的全局变量和static变量在data区’
bss是英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。BSS段属于静态内存分配。

6.当不同的类具有相同的间接基类时,()。

A.各派生类无法按继承路线产生自己的基类版本
B.为了建立唯一的间接基类版本,应该声明间接基类为虚基类
C.为了建立唯一的间接基类版本,应该声明派生类虚继承基类
D.一旦声明虚继承,基类的性质就改变了,不能再定义新的派生类

正确答案: C 你的答案: B (错误)
在派生列表中,同一基类只能出现一次,但实际上派生类可以多次继承同一个类。派生类可以通过两个直接基类分别继承自同一间接基类,也可以直接继承某个基类,再通过另一个基类再次继承该类。但是,如果某个类派生过程中出现多次,则派生类中将包含该类的多个子对象,这种默认情况在很多有特殊要求的类中是行不通的。虚继承就是为了应对这一情况而产生,虚继承的目的是令某个类做出声明,承诺愿意共享其基类。这样不论虚基类在继承体系中出现多少次,派生类中都只包含唯一一个共享的虚基类子对象。
为了建立唯一的间接基类版本,就是要保证间接基类为虚基类,所以选项B对,而选项C说的很拗口,不知道具体怎么理解,像下面的情形,类B/类C虚继承类A,而派生类D,不需要虚继承就可以保证只有一份A,所以感觉选项C说的不太好。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值