Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Указатель на тип char, нюансы

#cpp


Мне не понять

char *name[] = { "la la","la" };
cout << name << endl; // этот выдаёт адрес первого элемента

char *name1 = "la la";
cout << name1 << endl; // а этот самого "la la"


Почему первый вариант выдаёт адрес, а не полный строковый литерал "la la"?
Ведь cout перегружен, так что вместо адреса выдаёт полное значение пока не встретит \0.
    


Ответы

Ответ 1



Потому что на самом деле name — это указатель на массив, а не указатель на char. Хотите вывести первый элемент массива — пишите cout << name[0] << endl;

Ответ 2



В случае char *name1, name1 — это указатель на char, т.е. строка, которая и выводится. А в первом случае char *name[], name — это массив указателей на строки. Поэтому выводится адрес этого массива.

Комментариев нет:

Отправить комментарий