Лишние элементы в инициализаторе массива C ++ char Xcode

У моего имени шесть букв, а у второго четыре.

Неправильный код создаст и напечатает:

char myName[4][6] = {{'x', 'x', 'x', 'x', 'x', 'x'}, {'x', 'x', 'x', 'x'}};

Но правильный код не будет:

char myName [6] [4] = {{'x', 'x', 'x', 'x', 'x', 'x'}, {'x', 'x', 'x', 'x'}};

Есть ли причина, по которой:

  • второй массив [4] применяется к первому набору символов?
  • первый массив [6] применяется ко второму набору символов?

Я использую самую последнюю версию Xcode. Есть ли какой-то глюк, когда массивы инвертированы или что-то в этом роде? Я посмотрел вокруг, но не могу найти ничего, объясняющего это.

0

Решение

Это потому что char myName[4][6] представляет собой массив из четырех элементов char массивы (так что ваши данные будут соответствовать). в то время как char myName[6][4] это шесть массивов из четырех char массивы (которые не будут соответствовать вашим шести char массив).

1

Другие решения

символ [0] [0] [1] [0] [2]
символ [1] [1] [1] [1] [2]

А также, вы можете поместить массив в массив. Так что, если вы себе это представляете, у вас могут быть страницы с массивами. Просто ссылка сделать что-то вроде ..

int a[0] = b[4];

Это поместит b [4] […] в одну ячейку a [0]. Полезно для игр или еще много чего.

0

По вопросам рекламы [email protected]