Что такое «массив массивов»? - Arduino - PullRequest
0 голосов
/ 30 апреля 2019

Я следую учебному пособию о том, как сделать схему, включающую клавиатуру 4x4, несколько раз возникал определенный «векторный массив», который, как вы могли бы сказать, не знаю смысла.

Я искал вокруг, но ничего не нашел. Даже на эталонном прицеле Arduino.

Вот пример кода из видео (https://www.youtube.com/watch?v=GyprsoB887Y&t=437s).


// "rows" and "cols" being defined as 4 before, so the line is essentially equal to char keys[4][4]

char keys[rows][cols] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', '0'}
};

Итак, то, что происходит, в частности, похоже на массив массивов. Я понимаю, почему так должно быть, это не может быть одна переменная, назначенная нескольким массивам, это должен быть содержащий массив, содержащий их. Но я вижу, как это объявляется как 4 на 4, но не должно ли быть 1 на 4? Кроме того, что означает keys[rows][columns]

Не может быть просто:


char keys[] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', '0'} 
};

Почему бы и нет?

Спасибо за помощь.

1 Ответ

0 голосов
/ 30 апреля 2019

Неужели это не может быть просто:

char keys[] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', '0'} 
};

Почему бы и нет?

Этого не может быть, потому что char keys[] указывает массив типа char.С помощью приведенного выше утверждения вы инициализируете каждый элемент как сам массив типа char.

Если вы хотите указать его как массив типа char, правильный путь будет следующим:

char keys[] = {
  '1', '2', '3', 'A',
  '4', '5', '6', 'B',
  '7', '8', '9', 'C',
  '*', '0', '#', '0' 
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...