int main()
{
int *i,*j;
printf("%u",i);
}
Run Code Online (Sandbox Code Playgroud)
上述程序将导致输出为0
int main()
{
int *i,*j;
j=i;
printf("%u",i);
}
Run Code Online (Sandbox Code Playgroud)
但
上述程序将导致非零.为什么?
两个指针都没有初始化,因此它们的初始值是不确定的.访问未初始化的指针是未定义的行为.
此外,使用p转换说明符来打印指针值(并且还需要强制转换),因为u需要unsigned int参数:
printf("%p\n", (void *) i);
Run Code Online (Sandbox Code Playgroud)