如何以指针格式表示多维数组?

How to represent multi-dimensional array in pointer format?

本文关键字:数组 表示 格式 指针      更新时间:2023-10-16

对于一维数组,我访问数组元素没有问题。例如--

#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++ 遵循行主数组表示形式(?

这将为您提供第一行的第三个元素。

#include <iostream>    
int main()
{
int a[][3] = {1, 2, 3};
std::cout << *(*a + 2);
}

尽管您可能会发现a[0][2]更容易理解。

对于原始数组,C++ 继承了 C 的规则

a[i]

转换为

*(a + i);

要访问二维数组,我们可以应用此规则两次:

a[i][j] => *(a[i] + j) => *(*(a + i) + j)

尽管显然a[i][j]语法更容易理解。