• C++指针形参和引用形参的区别测试


    //指针参数测试方法1

    void PP_Change1(int *a,int *b)

    {  

      //传进来的是指针变量中的指针副本,在被掉函数中的形参有自己的内存,接受由实参传过来的值,  

      //值的交换是无法改变实参的  

      int *p;  

      p = a;  

      a=b;  

      b=p;  

      //但如果改变实参所指向的值,那就相互影响了,因为操作的是同一份内存,所以说是要考虑安全性,这点很重要

      //*a=1000;

    }

    //指针参数测试方法2

    void PP_Change2(int *&a,int *&b)

    {  

      int *p;

      p = a;

      a=b;  

      b=p;

    }

    //指针测试

    void PP_Change() {  

      //测试方法1

       cout<<"测试方法1"<<endl;  

      int av,bv;  

      int *a=&av,*b=&bv;

        cout<<"输入a"<<endl;  

      cin>>*a;

        cout<<"输入b"<<endl;  

      cin>>*b;  

      cout<<"*交换前"<<endl;  

      cout<<"a: "<<*a<<" b: "<<*b<<endl;  

      PP_Change1(a,b);  

      cout<<"*交换后"<<endl;  

      cout<<"a: "<<*a<<" b: "<<*b<<endl;

        //测试方法2  

      cout<<"测试方法2"<<endl;

       cout<<"输入a"<<endl;

       cin>>*a;

       cout<<"输入b"<<endl;

       cin>>*b;  

      cout<<"*交换前"<<endl;  

      cout<<"a: "<<*a<<" b: "<<*b<<endl;  

      PP_Change2(a,b);  

      cout<<"*交换后"<<endl;  

      cout<<"a: "<<*a<<" b: "<<*b<<endl;

    }

    测试结果:

    测试方法1
    输入a
    12
    输入b
    2
    *交换前
    a: 12 b: 2
    *交换后
    a: 12 b: 2
    测试方法2
    输入a
    12
    输入b
    2
    *交换前
    a: 12 b: 2
    *交换后
    a: 2 b: 12
    请按任意键继续. . .

    再次理解一下:函数调用不能改变实参

    指针变量的值,可以改变实参指针变

    量所指向变量的

     

       指针变量和指针变量所指向的值,

    分清

  • 相关阅读:
    【python】【pycharm】+python工程打包成exe+在windows下自动定时运行
    技术备忘
    【Linux】—常用命令(测试人员)
    【python】【pycharm】+pip解析
    【python】【pycharm】+封装&导入
    C# 之程序退出的方法
    C# 之值类型和引用类型
    C# 之数组
    找靓机AppUI自动化测试延伸
    初、中、高级程序员的区别有哪些?
  • 原文地址:https://www.cnblogs.com/Ellfelo/p/ref.html
Copyright © 2020-2023  润新知