如何解决打印指针的取消刷新值时出现问题
我试图了解指针的操作。
对于以下代码段:
void main () {
int x = 1;
int y = 2;
int z = 3;
int *p = &x;
int *q = &y;
int *r = &z;
//print with labels the values of x,y,z,p,q,r,*p,*q,*r
printf("x is: %d\n%y is: %d\nz is: %d\n\n",x,z);
printf("p is: %d\n%q is: %d\nr is: %d\n\n",r);
printf("*p is: %d\n%**q is: %d\n*r is: %d\n\n",*r);
}
使用gcc编译器的结果是:
这些行的预期结果:
是:
x is: 1
y is: 2
z is: 3
p is: 6422288
q is: 6422284
r is: 6422280
*p is: 00000001
*q is: 00000003
*r is: 76036FED
根据我的理解,不是最后三行应显示的内容,它们应具有与第一个原因相同的值,该结果背后是否有原因,或者它是正确的并且我缺少了什么?
解决方法
三个想法:
-
printf("p is: %d\n%q is: %d\nr is: %d\n\n",p,q,r);
无效。您需要使用%p
来打印指针。 -
所有printf语句中的百分比字符过多。
-
我同意你的要点。假设您删除了多余的百分比字符,您应该看到
*p is 1,*q is 2,*r is 3
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。