zoukankan      html  css  js  c++  java
  • C++指针的引用

    [1]指针的引用,必须加上头文件<iomanip>因为调用类setw()

               对一个数据可以使用“引用”(reference)这是C++
               对C的一个重要扩充,引用是一种新的变量类型,
               它的作用是为一个变量起一个别名。假如有一个变
               量a,想给它起一个别名b,可以这样写:
               int a;
               int &b=a;

               注意: 在上述声明中,&是引用声明符,并不代表
               地址。不要理解为“把a的值赋给b的地址”。声明变
               量b为引用类型,并不需要另外开辟内存单元来存
               放b的值。b和a占内存中的同一个存储单元,它们
               具有同一地址。声明b是a的引用,可以理解为:
               使变量b具有变量a的地址,当b代表与a的关系之后,
               不能在作为其他变量的代表

    #include<iostream>
    #include<iomanip>
    using namespace std;
    int main()
    {
            int a = 10;
            int &b = a;
            a = a*a;
            cout << a << setw(6)<<b<<endl;
            b = b/5;
            cout << b<< setw(6)<<a<<endl;
            return 0;
    }
    View Code

    [2]引用作为函数的参数

       (1) 将变量名作为实参和形参。这时传给形参的是
        变量的值,传递是单向的。如果在执行函数期间形
        参的值发生变化,并不传回给实参。因为在调用函
        数时,形参和实参不是同一个存储单元。
              

        比如要实现两个数值之间的互换,用其他方法比较难理解

    用下面的方法就比较好理解,

    函数申明的时候用的是int swap(int &a,int &b),

    在调用函数swap(i,j)的时候,无疑  &a = i,&b = j,这样两个的内存就放在一起了        

    #include <iostream>
    using namespace std;
    int main( )
    { 
        void swap(int &,int &);
        swap(int &,int
        int i=3,j=5;
        swap(i,j);
        cout<< i=′′<<i<<′′ <<′′j=′′<<j<<endl
        cout<<′′i=′′<<i<<′′ ′′<<′′j=′′<<j<<endl;
        return 0;
    }
    
    void swap(int &a,int &b)
    { 
        int temp;
        temp=a;
        a=b;
        b=temp;
    }
    View Code
  • 相关阅读:
    Java这样学,Offer随便拿,学习方法和面试经验分享
    LeetCode All in One 题目讲解汇总(持续更新中...)
    nodejs连接sqlserver
    配置-XX:+HeapDumpOnOutOfMemoryError 对于OOM错误自动输出dump文件
    list.ensureCapacity竟然会变慢
    java List.add操作可以指定位置
    java MAT 分析
    java STW stop the world 哈哈就是卡住了
    python中的is判断引用的对象是否一致,==判断值是否相等
    卡尔曼滤波(Kalman Filter)
  • 原文地址:https://www.cnblogs.com/fengdashen/p/3885199.html
Copyright © 2011-2022 走看看