如何以指针格式表示多维数组?
How to represent multi-dimensional array in pointer format?
对于一维数组,我访问数组元素没有问题。例如--
#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]
语法更容易理解。
相关文章:
- 寻找一种更好的方法来表示无符号字符数组
- 数组指针表示法C++(移动数组时)
- 在 C++ 中将整数数组转换为位集表示形式的最佳方法?
- 表示带有输入的数组中的元素数?
- N 维数组的大 O 表示法
- 为什么使用 size_t 来索引/表示数组的大小?
- 如何更好地表示 6 个整数键而不是作为 6 维数组的索引?
- 十六进制 QString 表示为无符号字符数组
- 如何将升压数组表示为类型的指针?
- 如何就地反转由数组表示的排列
- C++:如何解释图像的字节数组表示
- C/C++ int[] vs int*(指针与数组表示法).有什么区别
- C++ 一种方法,该方法将十进制值作为用布尔数组表示的二进制的整数返回
- 具有多维数组表示法的指针算术
- C++指针与数组表示法
- 在函数声明中,传递固定大小的数组表示什么
- 如何在 CUDA 中从稀疏数组表示形式变为密集数组表示形式
- 使用Cilk数组表示法和STL向量
- 尝试在此测试分数程序上使用指针表示法而不是数组表示法,但我被困住了
- 最小堆通过二叉树的数组表示;MoveDown函数无限循环