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