以前特意看過,但是還是會忘的,所以這次寫下來,以後忘了就看看。
char test[10];
這是一個數組,數組名被解釋爲數組第一個元素的地址,也就是說test = &test[0]。但是對數組名用sizeof運算符的時候卻計算的是整個數組的大小,不會把數組名解釋爲第一個元素的地址。但是sizeof對指向一個數組的指針來使用sizeof的時候得到的僅僅只是指針的大小。
並且將&運算符用在數組名上,返回的是整個數組的地址。,
那麼也就是說
&temp + 1 和temp+1不是一回事。前者的增量是十個字節,而後者的增量是1個字節.
所以說,數組名一般來說會被解釋爲第一個元素的首地址,但是有幾種情況不會。、
第一種,在用sizeof的時候
第二種,在使用取地址符的時候。
數組名被解釋爲地址,實際上是被解釋的爲第一個元素的地址,他和整個數組的首地址的值是相等的。
但是test 和 &test不是一回事,前者表示第一個元素的地址,數值上和數組首地址相等,後者雖然好像是對地址再取地址,即使一個指向數組的地址,相當於char(*)[10] = &test,但是他卻得到的是整個數組的首地址,兩者值相同,但是意義絕對是不同的,這點在上面+1那個例子就可以看出來。