每日一题 - day3

1.二维数组X按行顺序存储,其中每个元素占1个存储单元。若X[4][4]的存储地址为Oxf8b82140,X[9][9]的存储地址为Oxf8b8221c,则X[7][7]的存储地址为()。

A.Oxf8b821c4
B.Oxf8b821a6
C.Oxf8b82198
D.Oxf8b821c0

解答:

X[4][4] 至X[9][4]所差地址为5行的长度; oxf8b8221c - oxf8b82140 = 0xDC ,十进制为220;

(220 - 5) / 5 = 43,即每行的长度为43;X[7][7]的地址为X[4][4] 加 3行地址长度 加 3;

3行地址长度 加 3为 43 * 3 + 3 = 132,转换为十六进制为ox84;因此,oxf8b82140 + ox84 = 0xf8b821c4;

                

2.求函数返回值,输入x=9999

int func(int x){
int count=0;
while (x)
{
count++;
x=x&(x-1);// 与运算
}
return count;
}
解答: 8 , 这个就是计算1的个数
                
                
3.
执行下面语句后的输出为   (A)
int I=1;
if(I<=0)
printf("****\n") ;
else
printf("%%%%\n");
A. %%
B. ****
C. 有语法错,不能正确执行
D. %%%%

 解答:因为单个%是作为格式符使用的,两个%,表示要输出的就是%.

                

4.

解答:
1.在类A的析构函数中,delete一个非A类对象通常是没有问题的; 
在类A的析构函数中,delete一个类A的对象,就会造成死循环,堆栈溢出;
在析构函数外使用 delete后,应该立即给指针赋值 NULL防止野指针。

2.因为this是Myclass * const this指针,也就是说this指针指向的对象(不是指向的对象的值)不可以改变,所以给this赋值在编译期间就不会通过,
如果没有this = NULL这语句的话是栈溢出,因为会不停的调用析构函数。

3.this被const修饰不能修改。 删掉this=null后,在类的析构函数中调用delete this,delete this会去调用本对象的析构函数,而析构函数中又调用delete this,形成无限递归,造成堆栈溢出,系统崩溃。

  5.HJ60 查找组成一个偶数最接近的两个素数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值