先來看下圖
你認為以下的列印的結果是什麼?
接下來,我們先來分析
****在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位的運算結果
謝謝看到這裡😊