c++ - 使用指针显示多维数组中的元素

标签 c++ pointers multidimensional-array

您好,我刚刚开始了解指针和数组,我或多或少知道如何操作一维数组中的指针来显示元素。但是在多维数组中呢? 我一直在练习这段代码:

#include<iostream>
using namespace std;
int main()
{

    int a[2][3]= { {1,2,3},{4,5,6}};
    int (*ptr)[3] = &a[0]; // or (*ptr)[3] = a;

    cout <<"Adress 0,0: "<< a << endl;
    cout <<"Adress 0,0: "<< ptr << endl;         
    cout <<"Value 0,0: "<< *a[0] << endl;
    cout <<"Value 0,0: "<< *(ptr)[0]<< endl;
    cout <<"Adress 0,1: "<< &a[0][1] << endl;
    cout <<"Adress 0,1: "<< (ptr)[1] << endl;       

    return 0;
}

我已经设法使用数组名称和指针显示 a[0][0] 的地址和值,但是如何通过使用显示 a[0][1] 的地址和值以及后续元素指针?

最佳答案

(ptr)[1](与 ptr[1] 相同)不指向 a[0][1] ,它指向 a[1][0] 因为您将 ptr 定义为指向 int[3] 的指针,而不是 int 。因此,使用 ptr[1]ptr 递增 1 会跳过三个 int,直到 a[ 1][0]

ptr 增加一个 int 而不是三个 int 的大小:

ptr[0] + 1

以上将指向a[0][1]。并访问它:

*(ptr[0] + 1)

关于c++ - 使用指针显示多维数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28437867/

相关文章:

c++ - 检查 C++ 数组是否为 Null

c++ - 返回 const int* 与返回 const int* 引用

c - p.a 和 p->a 有什么区别,其中 p 是指针?

c++ - 用不重复的随机数填充二维数组

c++ - 在包含自定义类型的集合中查找

c++ - 函数返回指向类的指针时是否调用复制构造函数?

c++ - 如何使用 std::transform 进行计算

c - Pop 无法正常工作 - 起始项目不会出队

python - 从字符串中提取 float 以创建多个/多维数组来操作数据

java - 我正在尝试以垂直模式从左上角到右下角搜索我的java多维数组。我的代码有什么问题?