Двухмерный массив функции не проходит правильно в C ++ - PullRequest
0 голосов
/ 04 марта 2020

Я пытался передать массив двумерных символов в функцию в c ++, а полученный в функциях параметр - это просто случайные строки

void SomeFunction(char arr[][50])
{
   //arr is just random strings
}

int main()
{
  char arr[50][50] = { {"Hello"}, {"World"} };
  SomeFunction(arr);
}

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Как уже говорилось, вам нужно инициализировать значения массива перед его чтением.

void SomeFunction(char arr[][3])
{
   std::cout << arr[0][0];
}

int main()
{
  char arr[3][3] = {
      {'a', 'b', 'c'},
      {'d','e', 'f'},
      {'g', 'h', 'i'},
  };
  SomeFunction(arr);
}

В этом примере я инициализирую все значения массива в одном операторе, если вы не инициализируете или не присваиваете значения к указанному элементу и попытке доступа к нему произойдет неопределенное поведение, получение случайных строк может быть мусором, расположенным в той области памяти, к которой вы пытались получить доступ.

0 голосов
/ 04 марта 2020

Сначала необходимо инициализировать массив, а затем передать его через функцию, иначе он будет отображать значения мусора, как это показано в вашем случае. Пожалуйста, инициализируйте его с некоторыми значениями, а затем передайте его.

Пример кода для инициализации:

int x[3][4] = {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};

Каждый набор внутренних скобок представляет одну строку. В приведенном выше примере всего три строки, поэтому есть три набора внутренних скобок.

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