[英]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.