微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

打印指针的取消刷新值时出现问题

如何解决打印指针的取消刷新值时出现问题

我试图了解指针的操作。

对于以下代码段:

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

根据我的理解,不是最后三行应显示内容,它们应具有与第一个原因相同的值,该结果背后是否有原因,或者它是正确的并且我缺少了什么?

解决方法

三个想法:

  1. printf("p is: %d\n%q is: %d\nr is: %d\n\n",p,q,r);无效。您需要使用%p来打印指针。

  2. 所有printf语句中的百分比字符过多。

  3. 我同意你的要点。假设您删除了多余的百分比字符,您应该看到*p is 1,*q is 2,*r is 3

https://repl.it/repls/OpenAngelicControlflowgraph#main.c

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。