@Yonghwa
121

Почему в указатель типа char можно передать string?

What's up, программач.

Все пытаюсь с памятью разобраться, и еще одно issue.

void print(char *b)
{
	cout << b << endl;
}


Сюда почему-то можно передавать то, что в двойных кавычках будет, типа "fjkdfjlkdfjlkdfj".Не совсем понимаю, это же в аргументе указатель на char, и следовательно туда нужно передавать адрес.В чем я ошибаюсь?
  • Вопрос задан
  • 306 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
"fjkdfjlkdfjlkdfj" -- это строковый литерал. В большинстве контекстов он интерпретируется как массив char.
Массив при передаче в функцию конвертируется в указатель на свой первый элемент.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@MiiNiPaa
Строковый литерал имеет тип const char[x], где x — размер массива необходимого для размещения строки.

Такой массив может быть неявно преобразован в const char*.

Некоторые компиляторы не уважающие стандарт позволяют отбрасывать const у строковых литералов.
Ответ написан
Комментировать
Olej
@Olej
инженер, программист, преподаватель
можно передать string

... а вот со словом string в C++ будьте осторожнее - в C++ он означает совершенно конкретный тип (пришедший из STL) ... а не всё что попало ...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы