c++ - arr [0] [2]的传递地址,必须在双指针中接收

标签 c++ multidimensional-array pointer-to-pointer

考虑到必须在双指针中接收,需要一种更好的方法来传递地址arr [0] [2]。

想要传递arr [0] [2]而不存储任何其他变量。

#include <iostream>
using namespace std;
int help(int **arr)
{
    cout<<**arr;
}

int main()
{
    {
    int n=3,m=3,k=0;
    int **arr = new int*[n];
    for(int i = 0; i < n; i++) {
        arr[i] = new int[m];
    }
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            arr[i][j]=k;
            k++;
        }
    }

    int *g=*arr+2;
    int **h=&g;

    help(h);

}
}

最佳答案

没有更好的办法。不幸的是,C++语法x[y]可以用来表示两个截然不同的操作:如果x是一个数组,则在建立索引,如果x是一个指针,则它们是间接的和索引的。

如果调用者希望有一个指向指针的指针,并且您有一个二维矩阵,则除了实际创建矩阵中不存在的指针并传递其地址外,您无能为力。

对于一个指针数组,一个指向指针的指针以及一个二维数组,到达元素的语法是x[y][z]是无关紧要的……它们是三个非常不同的操作。

关于c++ - arr [0] [2]的传递地址,必须在双指针中接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61438464/

相关文章:

c++ - 低 RAM 消耗 C++ 特征求解器

c++ - Octave 和痛饮。 mkoctfile 提示 : unrecognized argument

python - 使用独立于数组维度的填充来切片 numpy ayarray

c - 整数/结构数组结束?

c++ - bool a |= mayRun(); 的右 watch 达式是什么时候?被处决?

c++ - 当程序出现故障时,信号处理函数中如何写入日志并将日志上传到MYSQL?

c++ - 在 C++ 中使用 union 时是否可以跳过字节?

java - 在java中的二维数组中的指定位置插入元素或删除元素

c - 无法在函数内分配内存并在 C 中返回它

c - 访问c中的指针数组