C語言引用
- 一、引用的概念
- 二、引用的聲明
- 三、例子
- 四、總結
一、引用的概念
引用,是某一個變量或對象的别名,對引用的操作與對其所綁定的變量或對象的操作等價。
二、引用的聲明
引用在聲明時必須進行初始化,如下聲明錯誤:
正确的聲明:
//定義了一個a的引用(别名)c
int a=5;
int &b =a;
不能再将已有的引用名作為其他變量或對象的名字或别名:
int a=5,b=6;
int& c=a;//定義了一個引用c
int& c=b ;//錯誤,c是a的引用,不能再重複定義
注意:&符号僅且僅在類型後面時表示引用,其他時候表示取位址。
三、例子
#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;
}
執行結果:
可以看到,操作引用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. 引用本身是目标變量或對象的别名,對引用的操作本質上就是對目标變量或對象的操作。是以能使用引用時盡量使用引用而非指針。