看過這個,你可能更瞭解指標一點(2)

辰末之星發表於2024-11-16

先來看下圖

你認為以下的列印的結果是什麼?

接下來,我們先來分析

****在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位的運算結果

謝謝看到這裡😊

相關文章