Устаревшее преобразование из строковой константы в 'char *' в c
Я работаю со строками.
Всякий раз, когда я выполняю следующую программу, я получаю ошибку как устаревшее преобразование из строковой константы в 'char' в c * в строке char *p = "hello"
Что я делаю неправильно?
Что означает эта ошибка? Как я могу ее исправить?
Мой код:
#include<stdio.h>
int main()
{
char *p = "hello";
printf("%s",p+1);
return 0;
}
Ответы
Ответ 1
Это должно быть предупреждение (хотя вы можете настроить компилятор для обработки предупреждений как ошибок, что часто является хорошей идеей).
Вы хотите: char const *p = "hello";
вместо этого.
Попытка изменить строковый литерал дает поведение undefined. const
мешает вам выполнить это случайно (т.е. Код, который пытается записать с помощью указателя, не будет компилироваться, если вы не удалите классификатор const
, например, при трансляции).
Ответ 2
Это предупреждение, потому что строка "Hello" является константой, и вы пытаетесь сохранить ее в не const char *. Чтобы решить проблему, сделайте ее
const char* p = "Hello"
или char[] p = "Hello"