0
假設我們有一個array A[m] [n]
。我發現A=A[0]
。如果兩個條款都包含地址,那麼爲什麼不是*A
和*A[0]
的結果相同? 假設第一個元素是2
,並且它的基地址是1000
,那麼如果A
和A[0]
都包含1000
,則兩個項的解除引用應產生相同的結果,即2
。在C中的二維數組中,爲什麼二維數組的第一個元素的基地址和第一行的基地址是相同的?
假設我們有一個array A[m] [n]
。我發現A=A[0]
。如果兩個條款都包含地址,那麼爲什麼不是*A
和*A[0]
的結果相同? 假設第一個元素是2
,並且它的基地址是1000
,那麼如果A
和A[0]
都包含1000
,則兩個項的解除引用應產生相同的結果,即2
。在C中的二維數組中,爲什麼二維數組的第一個元素的基地址和第一行的基地址是相同的?
A
不等於A[0]
,但A=&A[0][0]
,即A
是指向矩陣的第一個元素的指針。 A[0]
是指向A[0][0]
的指針。
所以:
*A
給出A[0]
地址;*(A[0])
給出2;*(*A)
給出2;例如:
#include <iostream>
int main() {
int A[5][5];
A[0][0] = 2;
std::cout<< *A << std::endl;
std::cout<< *(*A) << std::endl;
std::cout<< *(A[0]) << std::endl;
return 0;
}
此代碼打印:
0x7fffc5a6fc70
2
2