2012-02-21 2 views
1

У меня есть эта 2d динамический массив, и я хочу передать его в функцию, как бы я идти об этом, чтоПередача 2d динамический массив функции в C++

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

то не 2D-array..its на один мерный массив 'int *' s. – Naveen

+0

Это будет после того, как я пройду через него, выделив каждую позицию –

+0

@SteffanHarris: между реальным 2D-массивом существует большая разница, которая в итоге представляет собой один непрерывный блок памяти и этот динамически выделенный «массив массивов»; где данные не гарантируются смежными – KillianDS

ответ

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

for (int i = 0; i < boardsize; i++) 
    board[i] = new int[size]; 

Вы должны выделить вторую глубину массива.

Чтобы передать это 2D массив в функции реализовать это нравится:

fun1(int **); 

Проверить выполнение 2D массива по ссылке ниже:

http://www.codeproject.com/Articles/21909/Introduction-to-dynamic-two-dimensional-arrays-in

0

Вы можете передать указатель на указатель:

void someFunction(int** board) 
{ 


} 
1

Вы должны определить функцию, чтобы принять такого рода аргумент

void func(int **board) { 
    for (int i=0; i<boardsize; ++i) { 
     board[i] = new int [size]; 
    } 
} 

func(board); 

Если boardsize или size не являются глобалами, вы можете передать их через параметры.

void func(int **board, int boardsize, int size) { 
    for (int i=0; i<boardsize; ++i) { 
     board[i] = new int [size]; 
    } 
} 

func(board, boardsize, size); 
Смежные вопросы