Спросите о символе в массиве - PullRequest
2 голосов
/ 17 февраля 2020

пример

char names[2][5] = {"john","boy"};

Я хочу спросить о массиве измерений char 2 в c, в [2] я имею в виду, что он объясняет общий элемент массива, и [5] я имею в виду, это объяснение длины символа в массиве

Итак, правда ли, как использовать измерение массива 2 в c?

Извините за мой плохой английский sh

Ответы [ 4 ]

3 голосов
/ 17 февраля 2020

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

И вы используете каждый массив, как любой другой. Таким образом, первый элемент names равен names[0], второй - names[1]. Тогда первый элемент names[0] равен names[0][0], второй names[0][1], et c.

Кроме того, поскольку каждый элемент names является массивом, и каждый из этих двух массивов инициализированные как строки с нулевым символом в конце, вы можете использовать names[0] и names[1], как и любую другую строку.

1 голос
/ 17 февраля 2020

Многомерный массив - это элементы массива, которые в свою очередь являются массивами.

Давайте рассмотрим ваше объявление

char names[2][5] = {"john","boy"};

Вы можете ввести псевдоним типа, например

typedef char T[5];

поэтому имя T является псевдонимом для типа char[5].

Теперь ваше первоначальное объявление может быть переписано как

T names[2] = {"john","boy"};

То есть у вас есть массив из двух элементов который в свою очередь является массивом типа char [5].

Строковые литералы также имеют типы символьных массивов. Например, строковый литерал "John" может быть представлен как

char john[5] = { 'J', 'o', 'h', 'n', '\0' };

элементы строкового литерала используются для инициализации соответствующего массива символов.

Таким образом, ваш массив инициализируется как

char names[2][5] = { { 'J', 'o', 'h', 'n', '\0' }, { 'b', 'o', 'y', '\0', '\0' } };

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

0 голосов
/ 17 февраля 2020

char names[2][5] = {"john","boy"};

names - это многомерный массив char с высотой 2 и шириной 5:

 __________________________________________________________________
│    j      │    o       │    h       │    n        │     \0       │  // 5 char elements, 1.dimension
│names[0][0]│ names[0][1]│ names[0][2]│ names[0][3] │ names[0][4]  │              
│___________│____________│____________│_____________│______________│      
│    b      │    o       │    y       │    \0       │     \0       │  // 5 char elements, 2.dimension
│names[1][0]│ names[1][1]│ names[1][2]│ names[1][3] │ names[1][4]  │              
│___________│____________│____________│_____________│______________│

Извините, для простой пример, но это может помочь вам.

0 голосов
/ 17 февраля 2020

Рассмотрим таблицу 2 * 5, где вы получите 2 строки, каждая из 5 столбцов. Здесь 2-мерный массив содержит 2 строки, т.е. 2 char*. Каждый ряд имеет размер 5

enter image description here

Выходы:

names[0][0] = 'j'
names[1][0] = 'b'
name[0] = "john"
name[1] = "boy"
...