在C++中将二维动态数组传递给函数

5

我有一个二维动态数组,想要将其传递给一个函数,应该如何操作?

int ** board;
        board = new int*[boardsize];

        //creates  a multi dimensional dynamic array
        for(int i = 0; i < boardsize; i++)
        {
            board[i] = new int[boardsize];
        }

1
这不是一个二维数组,而是一个由int*组成的一维数组。 - Naveen
只有在我循环遍历并分配每个位置之后,才能进行操作。 - Steffan Harris
@SteffanHarris:真正的二维数组和动态分配的“数组的数组”之间有很大的区别;前者最终是一个连续的内存块,而后者无法保证数据是连续的。 - KillianDS
可能是如何在C++中使用数组?的重复问题。 - Alok Save
4个回答

3

1
你应该定义一个函数来接收这种类型的参数。
void func(int **board) {
    for (int i=0; i<boardsize; ++i) {
        board[i] = new int [size]; 
    }
}

func(board);

如果 boardsizesize 不是全局变量,你可以通过参数传递它们。
void func(int **board, int boardsize, int size) {
    for (int i=0; i<boardsize; ++i) {
        board[i] = new int [size];
    }
}

func(board, boardsize, size);

0
你可以传递一个指向指针的指针:
void someFunction(int** board)
{


}

0

创建并传递动态双维数组到任何函数的小代码。

 void DDArray(int **a,int x,int y)
 {
   int i,j;
    for(i=0;i<3;i++)
     {
      for(j=0;j<5;j++)
       {
         cout<<a[i][j]<<"  ";
       }

       cout<<"\n";
     }
  }

int main()
{
  int r=3,c=5,i,j;
  int** arr=new int*[r];
  for( i=0;i<r;i++)
   {
    arr[i]=new int[c];
   }

  for(i=0;i<r;i++)
   {
     for(j=0;j<c;j++)
      {
        cout<<"Enter element at position"<<i+1<<j+1;
        cin>>arr[i][j];
      }
   }
   DDArray(arr,r,c);

}

`


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接