c 學習之引用

2021-10-24 16:17:43 字數 2471 閱讀 8598

一、定義

引用就是給變數起別名

int a = 10;

記憶體中表示為

此時修改 b = 20;

cout << a << endl;

a應該為20;

#include

using namespace std;

intmain()

輸出結果

1.引用必須要初始化

int &b; //錯誤的,未初始化。

2.引用一旦初始化就不能更改了。

int a = 10;

int &b = a;

int &b =c; //錯誤的,不能再更改了

1.引用傳遞實現交換函式,**示例

#include

using namespace std;

void

swap

(int

&p,int

&q)int

main()

輸出結果

注意事項

1.不能返回區域性變數的引用

示例**

在這裡插入**片#include 

using namespace std;

int&

test()

intmain()

輸出結果

a是區域性變數,返回後就釋放,我們無權再去操縱。

2.函式的呼叫可以作為左值

#include

using namespace std;

int&

test()

intmain()

輸出結果

test()返回的是a

test() = 1000;等於說是把1000賦值給a

b又是a的別名

因此b等於1000

本質:引用的本質在c++內部是乙個指標常量

1、指標常量:指標指向的位址不能改變,但是指標指向的位址的值可以改變。

(1)改變指標指向的位址的值示例

#include

intmain()

結果正確

(2)改變指標指向的位址示例

#include

intmain()

結果錯誤

2、引用不能更改,引用的值可以更改的原因。

int a = 10;

int &b = a;

自動轉換為 int * const b = &a;

指標常量是指標指向的位址不能修改,這也就是為什麼引用不能更改的原因。

b = 20;

自動轉換為:*b = 20;

作用:常量引用主要用來修飾形參,防止誤操作

void showvalue(const int &val);

這樣 val就不會被改變了

int &a = 10; //做法錯誤,引用必須引一塊合法的記憶體

const int &a = 10; //加上const之後,編譯器將**修改為 int temp = 10;const int &a = temp;temp是臨時變數

C 學習之引用

include using namespace std void main b 14 printf a d b d n a,b 14 14 system pause 輸出 a 12 a 14 b 14 請按任意鍵繼續.輸出 11 11 請按任意鍵繼續.實現兩個數字之間的交換 void swap in...

C 學習筆記之 引用

先宣告一下,這裡的內容大多是 c 程式設計思想 中的內容,我最近在學習c 覺得裡面的很多話不錯,另外例子也都自己實驗了一番,有些現象很有趣,希望與大家分享。引用 reference 就像能自動地被編譯器間接引用的常量型指標。常量型指標的含義就是常量修飾指標,即指的地方不變,但所指地方的內容可以改變。...

C 學習之引用特性

引用即給變數賦予乙個別名,就像外號一樣,我叫李曉明,外號小明,實際都是指李曉明這個人。includeusing namespace std int main 程式的輸出記過就是10,通過b的引用,將a的值改掉了。結構體中的引用,includeusing namespace std typedef s...