Неожиданное поведение определения строки C

Насколько я знаю, приведенный ниже код не должен работать. Тем не менее, как-то это нормально на моем компиляторе. Пожалуйста, может кто-нибудь объяснить.

int main()
{
    char *string;
    string = "Goo";
}

1 ответ

Решение

Насколько я знаю, приведенный ниже код не должен работать

Боюсь, ваша информация неверна.

char *string;
string = "Goo";

совершенно верно. Это в основном,

  1. Определить char указатель string,
  2. Поместите базовый адрес строкового литерала "Goo" в string,

Однако вместо того, чтобы быть char указатель, если string был бы массив, тогда это было бы невозможно, так как массив не может быть назначен (за исключением времени определения, хотя список заключен в скобки).

Другие вопросы по тегам