1.设有数组定义: char array[]="China"; 则数组array所占的存储空间为__________
6
注意要加上\0的位置
数组中考虑‘\0’,sizeof()判断大小也要考虑‘\0’
2.初始化数组char[] strArray="kuai-shou",strArray的长度为()
9
数组长度不需要考虑\0
3.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
以上程序中,下列哪个函数调用会有问题()
b->FunctionB();
因为虚函数本质上是通过类对象的虚表进行访问,而且类的成员函数除了虚函数,其他都不存储在类当中,因此类对象不存在的情况下,无法使用虚函数,其他函数都可以正常访问(前提是这些函数都没有存取类对象的成员变量)
对象本来就是空的,只不过需要1个字节来进行占位,成员函数是不占对象空间的,影响对象空间大小只有虚函数,成员变量,继承关系中的一些变量
- 空类的对象需要 1 字节来确保它们具有唯一地址。
- 成员函数不会影响对象的大小。
- 虚函数会增加对象的大小,因为需要额外的虚函数表指针(vptr)。
- 成员变量直接决定了对象的大小。
- 继承关系中的基类成员会被继承到派生类,因此派生类对象的大小也包括基类成员的大小。
4.下列的常量定义中,错误的定义是( )。
A const int M=10;
B const int M=20;
C const char ch;
D const bool mark=true;
c const char ch;
常量的定义必须初始化
5.对于下面的代码
1 2 |
|
的输出是()
32
逗号表达式,取尾
逗号运算级别很低,int i = (j=4,k=8,l=16,m=32) ,加了括号就是取最后一个值,所以i=32;如果没加加括号就该是i=4.
6.math.h的abs返回值()
A 不可能是负数
B 不可能是正数
C 都有可能
D 不可能是0
C 都有可能
abs是取整数绝对值的函数,会出现负数是因为int中最小的负数-128没办法用正数绝对值表示
num为0或正数时,函数返回num值;
当num为负数且不是最小的负数时(不要问我最小的int类型负数是多少,上面那个图里面有真相),函数返回num的对应绝对值数,即将内存中该二进制位的符号位取反,并把后面数值位取反加一;
当num为最小的负数时(即0x80000000)-128,由于正数里int类型32位表示不了这个数的绝对值,所以依然返回该负数。
7.下面两段代码中for循环分别执行了多少次?
1 2 3 4 5 6 7 8 9 |
|
32767 16383
跑圈追赶问题:
unsigned short 2个字节,2……16 = 65536,2的16次方
看成一个圈
1.
可认为j比i落后65536-2=65534距离,j比i每次多跑2距离
所以赶上需要65534/2=32767次
2.
j比i落后65536-4=65532距离,j比i每次多跑4距离
所以赶上需要65532/4=16383次
8.关于变量及其作用范围描述正确的是()
A 实例变量是类的成员变量
B 静态变量用关键字static声明
C 在方法体中定义的局部变量在该方法被执行时创建
D 局部变量在使用前可不用初始化
AB
- C:局部变量存放在栈区;在Windows和Linux平台,全局/静态存储区跟执行代码一样,是在编译过程中就已经生成在执行文件中。
- D:变量在使用前必须初始化,不初始化变量是没有意义的。