当前位置:   article > 正文

C语言引用

c语言引用

一、引用的概念

引用,是某一个变量或对象的别名,对引用的操作与对其所绑定的变量或对象的操作等价。

二、引用的声明

引用在声明时必须进行初始化,如下声明错误:

int& c;//这是错误的声明(声明必须初始化)
  • 1

正确的声明:

//定义了一个a的引用(别名)c 
int a=5;
int &b =a;
  • 1
  • 2
  • 3

不能再将已有的引用名作为其他变量或对象的名字或别名:

 int a=5,b=6;
 int& c=a;//定义了一个引用c 
 int& c=b ;//错误,c是a的引用,不能再重复定义
  • 1
  • 2
  • 3

注意:&符号仅且仅在类型后面时表示引用,其他时候表示取地址。

三、例子

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a=5,b=6;
    int& c=a;//定义了一个引用c 
    c=b;
    printf("a=%d b=%d c=%d\n",a,b,c);
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

执行结果:
在这里插入图片描述
可以看到,操作引用c和操作原变量a能达到同样的效果。

既然如此,引用的使用有何必要呢?那就要涉及到其原理。实际上,引用不是定义一个新的变量或对象,因此内存不会为引用开辟新的空间存储这个引用。

举个栗子
在这里插入图片描述

利用引用传参实现数值交换:

#include<stdio.h>
#include<stdlib.h>
void swap(int & a,int & b){//引用作为函数的参数
    int temp=a;
    a=b;
    b=temp; 
}
int main(){
    int v1=10,v2=20;
    printf("v1=%d,v2=%d\n",v1,v2);//v1=10,v2=20
    swap(v1,v2);
	printf("v1=%d,v2=%d\n",v1,v2);//v1=20,v2=10
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

这样就不会为形参分配内存空间(使用指针作为函数的形参虽然达到的效果和使用引用相当),但当调用函数时仍需要为形参指针变量在内存中分配空间,而引用则不需要这样,故推荐使用引用而非指针作为函数的参数)。

四、总结

1.在引用的使用中,单纯给某个变量起别名意义不大,引用的目的主要用于在函数参数的传递中,解决大块数据或对象的传递效率和空间不如意的问题(例如传递复杂的结构体或类时)。
2. 引用本身是目标变量或对象的别名,对引用的操作本质上就是对目标变量或对象的操作。因此能使用引用时尽量使用引用而非指针。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AI编程探险家/article/detail/63155?site
推荐阅读
相关标签
  

闽ICP备14008679号