第一题
- 指针变量p进行自加运算(即 执行p++;)后,地址偏移值为1,则其数据类型为,char说法是否正确?
A:正确B:错误
答案及解析 B
比如我们的空类,空类所占的字节为1,指向空类的指针,自加运算之后,地址偏移也是1;
第二题
- 有如下类定义,请问sizeof(A)的值为:
cpp
class A
{
public:
int fun1();
private:
int _a;
static int b;
};
A:12
B:8
C:4
D:1
答案及解析 C
本题考查的是static类型的成员变量是否应该计算到sizeof里,答案是不需要;因为static类型的变量,不是属于某个对象的,是属于整个类的;所以不需要计算。
第三题
- 下面程序的输出结果是()
cpp
#include <iostream>
using namespace std;
int i = 0;
int fun(int n)
{
static int a = 2;
a++;
return (a * n);
}
int main()
{
int k = 5;
{
int i = 2;
k += fun(i);
}
k += fun(i);
cout << k;
return (0);
}
A:11
B:12
C:13
D:14
答案及解析 A
明天出解析,请谅解!
第四题
- 下面描述错误的是( )
A.this指针是非静态成员函数的隐含形参.B.每个非静态的成员函数都有一个this指针.
C.this指针是存在对象里面的.
D.this指针可以为空
答案及解析 C
A:this指针就是非静态成员函数都有的隐藏的形参,this指的是实例化对象的地址;而静态成员函数是属于整个类的,不是某个对象的,所以无法得到实例化对象的地址,也就不需要this指针了;
B:正确;
C:this指针是非静态成员函数的形参,存在的是函数栈帧,因为是形参,不存在对象里。
D:this指针一般不为空,但是可以强制转换为空;
第五题
- 在32位机器上用gcc编译以上代码,求sizeof(A),sizeof(B)分别是()
cpp
class A
{
int a;
short b;
int c;
char d;
};
class B
{
double a;
short b;
int c;
char d;
};
A:12 16
B:12 12
C:16 24
D:16 20
答案及解析 C
依旧是内存对齐:C/C++内存对齐规则(结构体、联合体、类)-CSDN博客