#include <stdio.h>
void f(int *p,int *q);
main()
{ int m=1,n=2,*r=&m;
f(r,&n);printf("%d,%d",m,n);
}
void f(int *p,int *q)
{ p=p+1;*q=*q+1; }
程序运行后的输出结果是
A)2,3

展开全部
收起
3回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • baby爱我多一次

    19人对此回答表示赞同

    其实 r只是把地址传递给了p,p+1只是把地址改变了,也就是r里存的地址就是m的地址加上int型字节的地址
    展开
    19
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 荼蘼

    18人对此回答表示赞同

    不会,p只是指向r的指针而已,跟r的值没有半毛钱关系。改变p就把p指向了别处,不会对r有影响
    展开
    18
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Zavier

    8人对此回答表示赞同

    函数形参和实参的关系。函数会为每个传入的实参建立一个拷贝,声明周期限于函数体内,函数运行完后这些拷贝所占内存均被释放,也就是不存在了。

    函数void f(int *p,int *q)的形参是指针类型的p和q,在函数体内对p,q的运算均只作用在拷贝的形参上,即不会更改传入指针的指向(因为指针的内容是地址),故语句p=p+1;改变的只是指针r的拷贝,不会改变r的指向(r的内容仍是m的地址)。而*q=*q+1;是对指针指向的内容进行操作,这是会生效的。
    展开
    8
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部