先来看下图
你认为以下的打印的结果是什么?
接下来,我们先来分析
****在1中
arr单独放在sizeof内表示整个数组,
因此计算的为整个数组大小。即6乘1得到6
1的答案为6
****在2中
arr没有被单独放在sizeof中,
arr此时表示数组首元素的地址,+0则表示计算的是第一个元素地址的大小,
其结果在32位中为4,在64位中为8
2的答案为4或8
****在3中
arr依旧没有被单独放入sizeof中,表示为首元素地址.
首元素地址被解引用得到该元素”a”
由于a为char类型,故大小为1
3的答案为1
****4中
arr[1]与*(arr+1)等效,表示为数组arr中的第二个元素,大小为1
4的答案为1
****5中
&与arr结合这里的arr表示整个数组,则&arr表示的是整个数组的地址
5的答案为4或8
****6中
&arr+1表示跳过了一个数组大小后到达的地址。
地址大小为4或8
6的答案为4或8
****7中
&arr[0]表示首元素的地址,+1表示跳过一个元素大小即来到了arr[1]的位置,
求&arr[1]的大小,该地址大小为4或8。
7的答案为4或8
****最后附上64位的运算结果
谢谢看到这里