Инициализировать и распечатать константный указатель - PullRequest
0 голосов
/ 27 мая 2018

Я получил этот код:

const char *newLine = "\n";
printf('Content: %c\n', *newLine);

Что происходит сейчас, это ошибка памяти.

Почему это происходит?

1 Ответ

0 голосов
/ 27 мая 2018

Код завершается с ошибкой памяти (ошибка сегментации), поскольку printf ожидает строку с нулевым символом в конце в качестве первого аргумента (т. Е. Действительный адрес, указывающий на некоторые символы, заканчивающиеся нулевым байтом), но вы передаете (фактически случайное) целое число, которое не является действительным адресом (если вам не очень, очень повезло: -).

Как прокомментировали люди, используйте двойные кавычки для передачи фактической строки, выделенной компилятором где-то:

const char *newLine = "\n";
printf("Content: %c\n", *newLine);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...