在C中打印指针的值

时间:2015-05-15 10:33:45

标签: c

int main()
{
int *i,*j;

printf("%u",i);
}

上述程序将导致输出为0

int main()
{

int *i,*j;

j=i;
printf("%u",i);
}

但是

上述程序将导致非零。为什么呢?

3 个答案:

答案 0 :(得分:5)

两个指针都没有初始化,因此它们的初始值是不确定的。访问未初始化的指针是未定义的行为。

此外,使用p转换说明符来打印指针值(并且还需要强制转换),因为u需要unsigned int参数:

printf("%p\n", (void *) i);

答案 1 :(得分:1)

尝试将指针指定给实际的整数存储位置,然后打印地址的值和指向的数据。

main() {
    int q = 0, *p = &q;
    printf("%p %d", p, *p);
}

答案 2 :(得分:0)

指针的格式说明符是%p。使用另一个说明符会导致未定义的行为;输出是否为0是未定义的。

有关格式说明符的完整列表,请单击here