coco1312 2015-08-20 02:33 采纳率: 0%
浏览 1548
已采纳

求解C程序里第二个printf的结果为何是3,7,7呢?

int k=7;
void f(int **s)
{
int t=&k;
*s=t;
_printf("%d,%d,%d,",k,*t,
*s);_
}
main()
{
int i=3,*p=&i,**r=&p;
f(r);
printf("%d,%d,%d\n",i,*p,**r);
}
/*
VC++程序运行结果为:
7,7,7,3,7,7
*/
求解C程序里第二个printf的结果为何是3,7,7呢?如果f(r)把r的地址改变了,p的地址也跟着变吗?那i的地址不是也跟着p也改变了吗?结果应该是7,7,7啊?求大侠帮忙解答

  • 写回答

3条回答 默认 最新

  • 零度永恒 2015-08-23 09:16
    关注

    这个问题和你提的另一个问题,突破点都一样,我已经回答了。把 “变量”“ 指针” “指针的指针”这三个概念理解透了,这类问题你就不会再困扰了。
    他们最终牵涉到两个概念“地址” “值”
    比如一条无限长的走廊上有无限多个房间,我们每个房间给一个唯一门牌号 1、 2 、3、 5 ……
    这个编号就是每一个房间的“地址”,房间里面放的物品就是它的“值”
    变量:就相当于一个房间, 它有一个编号,而且里面放物品。
    指针:相当于两个房间,一个房间里面存放的是另一个房间门牌号,我们需要通过房间里面的门牌号才能找到存放物品的房间取得物品。
    指针的指针:相当于3个房间,第一个房间里放着第二个房间的门牌号,第二个房间里放着第三个房间的门牌号,第三个房间里存放的才是物品,
    我们必须通过前面两个房间才能找到存放物品的那个房间取得物品。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的