对于一维数组,我访问数组元素没有问题。例如 -
#include<typeinfo>
#include<iostream>
#include<vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
int main()
{
int a[3] = {1, 2, 3};
cout << *(a + 0);
return 0;
}
但是当我尝试二维数组时,我得到了那种输出 -
#include<typeinfo>
#include<iostream>
#include<vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
int main()
{
int a[][3] = {1, 2, 3};
cout << *(a + 2);
return 0;
}
输出 -
0x7ffca0f7ebcc
如何以第一个例子中描述的格式获得输出为2(我将按行主要或列主要顺序得到2,但c ++遵循行主要数组表示)?
答案 0 :(得分:1)
这将为您提供第一行的第三个元素。
#include <iostream>
int main()
{
int a[][3] = {1, 2, 3};
std::cout << *(*a + 2);
}
虽然您可能会发现a[0][2]
更容易理解。
答案 1 :(得分:0)
对于原始数组,C ++从C继承了
的规则a[i]
转换为
*(a + i);
要访问二维数组,我们可以应用此规则两次:
a[i][j] => *(a[i] + j) => *(*(a + i) + j)
虽然a[i][j]
语法显然更容易理解。