练习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())