Вот мой код:Указывает ли язык C какую-либо неявную инициализацию только для указателей void?
int main()
{
int *p;
void *x;
printf("%p\n", p);
printf("%p\n", x);
return 0;
}
, который будет печатать:
koraytugay $ ./a.out
0x7fff53b35ad0
0x0
koraytugay $ ./a.out
0x7fff5803fad0
0x0
koraytugay $ ./a.out
0x7fff512c9ad0
0x0
koraytugay $ ./a.out
0x7fff55213ad0
0x0
koraytugay $ ./a.out
0x7fff52dbdad0
0х0
Есть ли объяснение этому поведению в языке?
'p' и' x' - неинициализированные переменные, а стандарт говорит, что использование неинициализированных переменных приводит к неопределенному поведению.Код не имеет смысла печатать неинициализированные переменные – Gopi
Нет. Никаких объяснений с определением. Ваш код вызывает неопределенное поведение. Вы оцениваете * неопределенные * переменные в * обоих * случаях. – WhozCraig
Неопределенное поведение. Каков твой вопрос? – LPs