考虑到必须在双指针中接收,需要一种更好的方法来传递地址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/