账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    用指针作为变量什么时候可以改变实参
    40
    0
    #include<stdio.h>
    void fun1(int *a,int *b);
    void fun2(int *a,int *b);
    void fun3(int *a,int *b);
    int main()
    {
    
        int i=10,j=20,*x=&i,*y=&j;
        //fun1(x,y);printf("%d %d",*x,*y); 输出10 20 
        //fun2(x,y); printf("%d %d",*x,*y);输出10 10
        fun3(x,y);     printf("%d %d",*x,*y); //输出20 10 
    
    
       return 0;
    }
    void fun1(int *a,int *b)
    {
        int *temp;
        temp=a;
        a=b;
        b=temp;
    
    }
    void fun2(int *a,int *b)
    {
        int *temp;
        *temp=*a;
        *a=*b;
        *b=*temp;
    
    }
    void fun3(int *a,int *b)
    {
        int temp;
        temp=*a;
        *a=*b;
        *b=temp;
    
    }

    /*
    (1) 对与第一个fun1()函数

           为什么他们的值没有发生改变呢? 我的理解是,fun()函数中
           是a,b的地址调换了 应该是改变了值才对 应该是20 10,但是
           他们没有改变。

    (2)对与第二个fun2()函数

       *temp,*a,*b他们是指针变量所指向的值发生变化,应该不会影响实参i,j吧
       但是和我想的不一样。

    (3)对与第三个fun3()函数

       为什么就改变了呢?
    
    */
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部