举例说明C++中二维数组与指针的应用:
#include <iostream>
using namespace std;
int main() {
int a[2][3] = {{0,1,2},{3,4,5}};
cout << a << endl;//第一行数组的第一个数据的地址(a[0][0])
cout << *a << endl;//第一行数组的第一个数据的地址(a[0][0])
cout << a[0] << endl;//第一行数组的第一个数据的地址(a[0][0])
cout << &a[0] << endl;//第一行数组的第一个数据的地址(a[0][0])
cout << &a[0][0] << endl;//第一行数组的第一个数据的地址(a[0][0])
cout << a+1 << endl;//第二行数组的第一个数据的地址(a[1][0])
cout << *(a+1) << endl;//第二行数组的第一个数据的地址(a[1][0])
cout << a[1] << endl;//第二行数组的第一个数据的地址(a[1][0])
cout << a[1]+1 << endl;//第二行数组的第二个数据的地址(a[1][1])
cout << *(a+1)+1 << endl;//第二行数组的第二个数据的地址(a[1][1])
cout << *(a[1]+1) << endl;//a[1][1]的数据
cout << *(*(a+1)+1) << endl;//a[1][1]的数据
return 0;
}
使用eclipse运行结果:
总结:
(1)a、*a 、a[0]、&a[0]、&a[0][0]都表示第一个一维数组的数组名和首地址;
(2)a[0]可以看成a[0]+0,同理a[1]+1也表示a[1]的第二个数据的首地址,因此*(a[1]+1)表示a[1][1]的值。此外,*(*(a+1)+1)也可以表示a[1][1]的值。