3 回答

TA貢獻1864條經(jīng)驗 獲得超6個贊
A和&a的價值是一樣的,怎么回事?
(void *) a == (void *) &a
它到底做了什么int(*p)[3];定義指向數(shù)組的指針,我知道,但是,指向數(shù)組的指針與指向數(shù)組的第一個元素的指針和數(shù)組的名稱有什么不同呢?
a + 1 /* address of the second element of the array */&a + 1 /* address one past the last element of the array */
編輯:
T
T
sizeof
&
printf("a:%d\t&a:%d\n", a, &a);
printf("a:%d\t&a:%d\n", &a[0], &a);
d
p
void *
printf("a:%p\t&a:%p\n", (void *) a, (void *) &a);
printf("a:%p\t&a:%p\n", (void *) &a[0], (void *) &a);

TA貢獻1827條經(jīng)驗 獲得超4個贊
其他答案已經(jīng)解釋了這個問題。我正試著用一些圖表來解釋它。希望這會有幫助。
int a[3] = {5, 4, 6}
a
和
&a
有同樣的價值。怎么回事?
a
a
a
0x100
0x100
a
&a
a
a
&a
它到底是做什么的 int (*p)[3];
聲明一個指向數(shù)組的指針,我知道這一點。但是,指向數(shù)組的指針與指向數(shù)組的第一個元素的指針和數(shù)組的名稱有什么不同呢?
&a
p
p
0x100
.
注:
..如 C
數(shù)組由引用傳遞(除 sizeof
職能)。
sizeof
sizeof
&

TA貢獻1865條經(jīng)驗 獲得超7個贊
a對應于指向數(shù)組第0元素的指針。然而,&.的情況也是如此,它只是給出了數(shù)組的起始地址。
a --> pointer pointing to starting element of array a[],it does not know about other element's location.
.
&a --->address location for storing array a[] which stores first element location,but knows every element's location
.
int(*p)[3]是指向數(shù)組的指針。如果是int*p[3],其含義將完全不同。這將意味著一系列的指針,這將是完全不同的上下文。
指向數(shù)組的指針將自動處理數(shù)組中的所有其他元素。
然而,指向數(shù)組的第一個元素的指針,即a只知道數(shù)組的第一個元素,您必須手動給指針算術(shù)方向來訪問下一個元素。參見,在本例中-我們可以通過將2添加到a,即將第三個元素添加到a,即a+4,以此類推,從a獲得第二個元素。/注意兩者的區(qū)別,因為它是一個整數(shù)數(shù)組!
- 3 回答
- 0 關(guān)注
- 348 瀏覽
添加回答
舉報