關於數組首地址

以前特意看過,但是還是會忘的,所以這次寫下來,以後忘了就看看。


char test[10];

這是一個數組,數組名被解釋爲數組第一個元素的地址,也就是說test = &test[0]。但是對數組名用sizeof運算符的時候卻計算的是整個數組的大小,不會把數組名解釋爲第一個元素的地址。但是sizeof對指向一個數組的指針來使用sizeof的時候得到的僅僅只是指針的大小。

並且將&運算符用在數組名上,返回的是整個數組的地址。,

那麼也就是說

&temp + 1 和temp+1不是一回事。前者的增量是十個字節,而後者的增量是1個字節.

所以說,數組名一般來說會被解釋爲第一個元素的首地址,但是有幾種情況不會。、

第一種,在用sizeof的時候

第二種,在使用取地址符的時候。

數組名被解釋爲地址,實際上是被解釋的爲第一個元素的地址,他和整個數組的首地址的值是相等的。

但是test 和 &test不是一回事,前者表示第一個元素的地址,數值上和數組首地址相等,後者雖然好像是對地址再取地址,即使一個指向數組的地址,相當於char(*)[10] = &test,但是他卻得到的是整個數組的首地址,兩者值相同,但是意義絕對是不同的,這點在上面+1那個例子就可以看出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章