Массив указателей символов, указывающих на строки в одинарных кавычках, печатает последние 4 байта строки

#include<stdio.h>
int main()
{
      char *value[] = {'Godnull'};
      printf("%s\n",value);
      return 0;
}

Выход: llun

Может кто-нибудь объяснить, пожалуйста, этот вывод.

2 ответа

Написание строки в одинарных кавычках абсолютно нормально в C. Они называются "MultiCharacter Constant", который имеет тип "int". И в зависимости от компилятора int будет иметь размер4 байта, который может хранить 4(1 байт символов) в вашем массиве. Вероятно, это может быть причиной того, что вы печатаете только четыре символа на консоли. Пожалуйста, укажите это несколько символов в символьную константу

В любом случае не рекомендуется объявлять массив указателей символов, как указано выше.

Спасибо,

У вас есть несколько проблем здесь:

 char *value[] = {'Godnull'};

Вы создаете массив строк, когда я предполагаю, что вы пытаетесь создать одну строку

Кроме того, чтобы инициализировать строку, вы хотите строку в двойных кавычках:

  char *value = "Godnull";

Редактировать: Если вы действительно хотите объявить это как массив символов и использовать его как строку, попробуйте:

 char value[] = {'G', 'o', 'd', 'n', 'u', 'l', 'l', '\0'};
Другие вопросы по тегам