假设我在C++中声明和初始化了以下多维数组:
unsigned a[3][4] = {
{12, 6, 3, 2},
{9, 13, 7, 0},
{7, 4, 8, 5}
};
然后我执行这段代码:
cout << a << endl; // output: 0x7fff5afc5bc0
cout << a + 1 << endl; // output: 0x7fff5f0afbd0
cout << *a << endl; // output: 0x7fff5afc5bc0
cout << *a + 1 << endl; // output: 0x7fff5f0afbc4
我不太理解在这里发生了什么。
a
是第一个元素的地址,对吧?在单维数组中,*a
应该是第一个元素的值,但是它的值与a
相同?!在这个情况下,*a
到底是什么意思?为什么
a + 1
和*a + 1
不同?
*(*a + 1)
和**(a+1)
进行解引用,你就会看到它们各自指向的位置。 - vsoftco