第四章 4.9节练习

练习4.28

写一段程序,输出每一种内置类型所占空间的大小。

解答:

这里可以用sizeof来输出你想得到的类型的大小。


练习4.29

推断下面代码的输出结果并说明理由。实际运行这段程序,结果和你想象的一样吗?如果不一样,为什么?

int x[10]; int *p = x;

cout << sizeof(x)/sizeof(*x) << endl;

cout << sizeof(p)/sizeof(*p) << endl;

解答:

这里会输出,

10

1

因为这里x[10]是分配出空间的,然后其长度除以第一个元素的大小,就是空间中元素的数量。

而p是一个指针,在32bit程序中,其大小为4个字节,在64bit程序中,是8个字节。

然后,在除以一个int的大小值,如果是32bit,应该就得到的是1。

这里和我预期的有些不一样,因为我使用的是64bit系统,本来以为这里会输出2的。这里应该和我创建的项目是有关系的,win32的控制台,应该按照32bit进行编译的。


练习4.30

根据4.12节中的表,在下述表达式的适当位置加上括号,使得加上括号之后表达式的含义与原来的含义相同。

(a) sizeof x + y

(b) sizeof p->mem[i]

(c) sizeof a < b

(d) sizeof f()

解答:

(a) sizeof (x )+ y

(b) sizeof (p->mem[i])

(c) sizeof (a) < b

(d) sizeof (f())


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值