Подтвердить что ты не робот

Устаревшее преобразование из строковой константы в 'char *' в c

Я работаю со строками.

Всякий раз, когда я выполняю следующую программу, я получаю ошибку как устаревшее преобразование из строковой константы в 'char' в c * в строке char *p = "hello"

Что я делаю неправильно?

Что означает эта ошибка? Как я могу ее исправить?

Мой код:

#include<stdio.h>
int main()
{
    char *p = "hello";
    printf("%s",p+1);
    return 0;
}
4b9b3361

Ответ 1

Это должно быть предупреждение (хотя вы можете настроить компилятор для обработки предупреждений как ошибок, что часто является хорошей идеей).

Вы хотите: char const *p = "hello"; вместо этого.

Попытка изменить строковый литерал дает поведение undefined. const мешает вам выполнить это случайно (т.е. Код, который пытается записать с помощью указателя, не будет компилироваться, если вы не удалите классификатор const, например, при трансляции).

Ответ 2

Это предупреждение, потому что строка "Hello" является константой, и вы пытаетесь сохранить ее в не const char *. Чтобы решить проблему, сделайте ее

const char* p = "Hello" или char[] p = "Hello"