Модификация динамического c 2D массива с ++ - PullRequest
0 голосов
/ 16 марта 2020

Я пытался научиться правильно использовать указатели и функции. У меня есть функция для выделения памяти и инициализации массива динамического 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, но она все еще сегментируется. Что не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...