Массив указателей символов, указывающих на строки в одинарных кавычках, печатает последние 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'};