C++中的引用

来源:互联网 发布:kindle有用吗 知乎 编辑:程序博客网 时间:2024/06/13 23:20

引用

引用并不是新定义一个变量,而是一个已定义变量的别名。

定义的格式:
类型 &引用变量名 = 已定义的变量名

特点:

  • 对一个已定义变量可多次进行引用
  • 引用仅仅为别名
  • 引用必须进行初始化
  • 引用只能在初始化时引用一次,不能再改变为其他已定义变量引用

    下面用代码进行示范:

void test(){    int a = 5;    int b = 4;    int &c = a;    //c = b;      //错误,因为引用不能再改变为其他已定义变量引用    c = 10;       //a = 10,因为c为a的别名    int &d = c;    //int &e;     //错误,因为引用必须进行初始化    d = 8;        //a = 8,因为d为a,c的别名}

const引用

不能通过const引用来对变量进行赋值。

下面用代码进行示

void test (){    int d1 = 4;    const int & d2 = d1;    d1 = 5;     //d2 = 6;      //不能给常量(能被修改的量)赋值    const int d3 = 1;    const int & d4 = d3;    //int&d5 = d3; //不能引用常量    const int & d6 = 5; // 常量具有常性,只有常引用可以引用常量    double d7 = 1.1;    //int& d8 = d7;//d7是double类型,d8是int,d7赋值给 d8时要  生成一个临时变量    // 也就是说d8引用的是这个带有常性的临时变量,所以不能赋值。}

引用做参数

如果形参为引用类型,那么形参则为实参的别名。如果对形参进行改变也会对实参进行改变。引用做参数与指针做参数相似,只不过引用做参数不需要传变量的地址。
如果函数的返回值为引用,那么引用对象不能为一个临时变量,返回对象的生命周期大于当前函数的作用域。

引用与指针

引用与指针的关系

  • 在语言的内部引用其实是用指针来实现的

引用与指针的相同点

  • 引用和指针都是地址的概念

引用与指针的区别:

  • 引用必须进行初始化,而指针可以不进行初始化
  • 引用不能为空,而指针可以为空
  • 引用不可再引用其他变量,指针可以再指向其地址
  • 引用的sizeof()得到的是引用类型的sizeof(),指针的sizeof()得到的是指针指向地址的sizeof()
  • 对引用++得到的是引用内容++的结果,对指针++得到的是指针指向地址++的结果
  • 引用是常量所以没有const,指针有const

下面用代码进行示

void test(){    double a = 10;    char b = 0;    double *c = &a;    char *d = &b;    double &e = a;    char &f = b;    cout << "sizeof(c):" << sizeof(c) << endl;    cout << "sizeof(d):" << sizeof(d) << endl;    cout << "sizeof(e):" << sizeof(e) << endl;    cout << "sizeof(f):" << sizeof(f) << endl;    cout << "++c:" << ++c << endl;    cout << "++e:" << ++e << endl;}

运行结果:
运行结果

总结:指针比引用更加强大也更加灵活,但同时也更加难以控制更加危险。

原创粉丝点击