Посмотрите на следующую программеНенадлежащее выхода через полукокс указатели
int main()
{
char p[3]="bug";
puts(p);
char *a=p;
puts(a);
return 0;
}
Для 1-я пут я получаю правильный выход (т.е.) «ошибка»
Но на 2-й пут я получаю выход как «↓ ошибки (»
- Почему для второго значения выходного мусорной добавляется в конце?
- символ * а указывает на то же место памяти, как полукокса р [3]. Почему он не в состоянии определить конец «\ 0» ?
'' ошибка "' имеет длину 4 символа. Нулевой ограничитель входит в массив. Здесь где-то есть носовые демоны. – nmichaels
@nmichaels Я никогда не слышал о носовых демонах раньше. Спасибо за это, awesome :) – cnicutar
@nmichaels запутался, так как 1st puts смог обнаружить '\ 0' и дал правильный выход. Вот почему этот вопрос поднят – intex0075