C++引用

C++的引用个人感觉像是C#/Java等高级语言的传址的开端。也是C的指针概念上的一个拓展。现对C++引用进行一定的介绍:

新野网站建设公司创新互联公司,新野网站设计制作,有大型网站制作公司丰富经验。已为新野1000+提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的新野做网站的公司定做!

一 , 引用的申明

#include <iostream>
using namespace std;
int main()
{
    int a = 1;
    int &po = a;
    po = 2;
    cout << "a的值为 :" << a << endl;
    return 0;
}

得到的结果为:

C++ 引用

可以看到 , 当对po进行赋值2的时候,a的值也变为了2.其实po和a指向的是同一块内存。这里po和指针(*)很像。

引用(&)和 指针(*)的区别:

① ,引用& 申明时就必须初始化。如声明int的引用 int &po = a;直接要为其赋值a(int类型)。

② ,引用没有地址的概念(没有保存地址 , 而是直接指向内容 , 所以它的效率比指针要高)。

二 , 其他类型的引用申明

①:数组:

#include <iostream>
using namespace std;
int main()
{
    int a[2][3];
    int (&po)[2][3] = a;//申明一个引用,必须要对其进行初始化
    po[0][1] = 3;
    cout << "a[0][1]的值为:" << *((*a)+1) << endl;
    return 0;
}

得到的结果为:

C++ 引用

注意数字的引用申明

②:指针:

#include <iostream>
using namespace std;
int main()
{
    int a = 4;
    int *p = &a;
    int * (&po) = p;
    *po = 5;//此时 , 引用po和指针p的用法是一样的
    cout << "a的值为:" << *p  <<  endl;
    cout << "a的值为:" << *po  <<  endl;
    return 0;
}

执行结果为:

C++ 引用

关于结构体的申明和int是一样的额

(重点)关于引用参数:

#include <iostream>
using namespace std;
void fun( int &a)
{
    a = 2;
}

int main()
{
    int a = 1;
    fun(a);
    cout << "a的值为 : " << a << endl;
    return 0;
}

fun函数如果用C#来写的话 , 应该是 fun( ref int a ), 和C#一样,当对fun的参数a进行重赋值时,main中实参a的值也会发生改变这和C的指针效果是一样的,不一样的是:

C++传引用比C传指针的效率要高 , 因为引用没有保存地址,它直接指向内容。我把C的传指针实现一下:

#include <iostream>
using namespace std;
void fun( int *a)
{
    *a = 2;
}

int main()
{
    int a = 1;
    fun(&a);
    cout << "a的值为 : " << a << endl;
    return 0;
}

当然 , 如果要使用C++的话 , 最好是用引用 , 效率高啊。。。。

文章名称:C++引用
链接URL:https://www.cdcxhl.com/article10/jcpddo.html

成都网站建设公司_创新互联,为您提供做网站云服务器小程序开发营销型网站建设外贸建站全网营销推广

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作