Я пытался научиться правильно использовать указатели и функции. У меня есть функция для выделения памяти и инициализации массива динамического c 2d. Но когда я пытаюсь изменить 2D-массив другой функцией, происходит сбой сегментации.
Это функция для инициализации 2D-массива.
void init(char**& a, int row, int col){
a = new char* [row];
for(int i = 0; i < row; i++){
a[i] = new char[col];
}
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
a[i][j] = 'X';
}
}
}
Это функция размещения (это предполагается поместить 'T' или 'O' в самый нижний пробел)
void Move(char**& arr, int row, int col){
char player1= 'T';
char player2 = 'O';
bool wincon = false;
while(wincon==false){
for(int i = 0; wincon == false; i++){
cout<<"What column are you playing: ";
cin>>col;
if( i % 2 == 0 ){
for(int j = row; j>0; j--){
if(arr[j][col] == ' '){
arr[j][col] = player1;
}
}
}
if( i % 2 == 1){
for(int j = row; j>0; j--){
if(arr[j][col] == ' '){
arr[j][col] = player2;
}
}
}
}
}
}
И вот как я вызываю функции в main.
int main(){
int row;
int col;
cout<<"Give me the # of rows: ";
cin>>row;
cout<<endl;
cout<<"Give me the # of columns: ";
cin>>col;
cout<<endl;
char** arr;
init(arr, row, col);
Move(arr, row, col);
}
Я также пробовал вызывая функцию Move внутри init, но она все еще сегментируется. Что не так?