繁体   English   中英

在C中打印指针的值

[英]Printing the value of a pointer in C

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

printf("%u",i);
}

上面的程序将输出为0

int main()
{

int *i,*j;

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

上面的程序将导致非零。 为什么?

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM