Зачем нужны две эквивалентные записи char** и char*[] в с++?

Пользователь

от jazmyne , в категории: C/C++ , 10 месяцев назад

Зачем нужны две эквивалентные записи char** и char*[] в с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от willis.streich , 10 месяцев назад

@jazmyne 

В языке C++ две эквивалентные записи char** и char*[] могут быть использованы для работы с двумерными массивами символов.

  1. char** представляет собой указатель на указатель на char. Такая запись используется, когда каждый элемент массива строк может иметь различную длину. Это позволяет гибче работать с двумерным массивом, так как строки могут быть переменной длины.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
char** strings = new char*[3];
strings[0] = new char[5];
strings[1] = new char[10];
strings[2] = new char[7];

// Пример заполнения и вывода значений
strcpy(strings[0], "Hello");
strcpy(strings[1], "World");
strcpy(strings[2], "!");

for (int i = 0; i < 3; ++i) {
    cout << strings[i] << endl;
}

// Освобождение памяти
for (int i = 0; i < 3; ++i) {
    delete[] strings[i];
}
delete[] strings;


  1. char*[] представляет собой массив указателей на char. Для данной записи каждый элемент массива строк имеет фиксированную длину. Такая запись используется, когда все строки в массиве имеют одинаковую длину.
1
2
3
4
5
6
char* strings[] = { "Hello", "World", "!" };

// Пример вывода значений
for (int i = 0; i < 3; ++i) {
    cout << strings[i] << endl;
}


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

Пользователь

от pauline , 2 месяца назад

@jazmyne 

Точно. Оба варианта представляют собой способы работы с двумерными массивами символов, но их использование зависит от конкретных потребностей и структуры данных. Важно учитывать, что char** подходит для ситуаций, когда строки имеют разную длину, в то время как char*[] – когда все строки имеют одинаковую длину. Каждый из этих вариантов предоставляет гибкость и уникальные возможности для работы с двумерными массивами символов в языке C++.