c 中引用有什麼用,請大蝦們指教

時間 2021-11-04 05:07:26

1樓:匿名使用者

在c/c++呼叫函式時, 如果函式有引數, 這時c/c++使用的是傳值的方式, 而不是vb裡的傳址的方式.比如函式:

void swap(int a, int b)

該函式看起來是用來交換a和b的值的, 但是如果有**:

void main() 執行完該函式以後a仍然是2, b仍然是3, 也就是說a和b的值並沒有交換. 為什麼哪? 這就是"傳值"的方式.

也就是說呼叫該函式時, swap所操作的a和b並不是main函式裡的a和b, 而是另外在堆疊上申請了一塊記憶體, 只是把main函式裡的a和b複製過來了. 因此在swap函式裡無論對a和b做什麼操作都不會影響到main裡的a和b的.

如果是在vb裡, 那麼swap函式內部的a和b和main函式裡的a和b是同一塊記憶體, 執行完swap(a,b)後,a=3,b=2;

如果想要達到swap(a,b)後a=3,b=2在c語言裡只有使用指標來現. 但指標不易操作, 且容易出錯. 因此c++裡定義了引用型別, 如果變數宣告為引用, 那麼函式便為"傳址", 也就達到了swap交換的目的.

再不明白的話, 可以私聊.

2樓:匿名使用者

上面用了引用,就可以改變

3樓:喻元愷

上面交換是用的位址的方式,位址交換了,當然就換了,下面的是傳值的方式,也是實現交換了的,但是區域性的變數時換了的,不會影響原來的變數的哈,當然就那樣了

4樓:匿名使用者

因為你第乙個函式引數x,y儲存的是a,b的位址(&取址符)

第二個函式引數x,y儲存的是a,b的值,這樣只能交換x,y的值,不能交換a,b的值

不信你在第二個函式y=temp後面加一句cout<

請問c++中的引用符號「&」到底怎麼使用?

5樓:苑

c++中的引用符號「&」的使用方法是,型別識別符號 &引用名=目標變數名。

c++是c語言的繼承,它可進行過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。引用(reference)就是c++對c語言的重要擴充。引用就是某一變數(目標)的乙個別名,對引用的操作與對變數直接操作完全一樣。

6樓:西西哩的小馬甲

引用就是某一變數(目標)的乙個別名,對引用的操作與對變數直接操作完全一樣。

引用的宣告方法:型別識別符號 &引用名=目標變數名;

【例1】:int a; int &ra=a; //定義引用ra,它是變數a的引用,即別名 ;

說明:(1)&在此不是求位址運算,而是起標識作用。

(2)型別識別符號是指目標變數的型別。

(3)宣告引用時,必須同時對其進行初始化。

(4)引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。 ra=1; 等價於 a=1;

(5)宣告乙個引用,不是新定義了乙個變數,它只表示該引用名是目標變數名的乙個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。

故:對引用求位址,就是對目標變數求位址。&ra與&a相等。

(6)不能建立陣列的引用。因為陣列是乙個由若干個元素所組成的集合,所以無法建立乙個陣列的別名。

7樓:匿名使用者

引用是c++引入的新語言特性,是c++常用的乙個重要內容之一,正確、靈活地使用引用,可以使程式簡潔、高效。

引用簡介

引用就是某一變數(目標)的乙個別名,對引用的操作與對變數直接操作完全一樣。

引用的宣告方法:型別識別符號 &引用名=目標變數名;

【例1】:int a; int &ra=a; //定義引用ra,它是變數a的引用,即別名

說明:(1)&在此不是求位址運算,而是起標識作用。

(2)型別識別符號是指目標變數的型別。

(3)宣告引用時,必須同時對其進行初始化。

(4)引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。

ra=1; 等價於 a=1;

(5)宣告乙個引用,不是新定義了乙個變數,它只表示該引用名是目標變數名的乙個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。故:對引用求位址,就是對目標變數求位址。

&ra與&a相等。

(6)不能建立陣列的引用。因為陣列是乙個由若干個元素所組成的集合,所以無法建立乙個陣列的別名。

引用應用

1、引用作為引數

引用的乙個重要作用就是作為函式的引數。以前的c語言中函式引數傳遞是值傳遞,如果有大塊資料作為引數傳遞的時候,採用的方案往往是指標,因為這樣可以避免將整塊資料全部壓棧,可以提高程式的效率。但是現在(c++中)又增加了一種同樣有效率的選擇(在某些特殊情況下又是必須的選擇),就是引用。

【例2】:

此處函式的形參p1, p2都是引用

為在程式中呼叫該函式,則相應的主調函式的呼叫點處,直接以變數作為實參進行呼叫即可,而不需要實參變數有任何的特殊要求。如:對應上面定義的swap函式,相應的主調函式可寫為:

main( )

float &fn2(float r) //定義函式fn2,它以引用方式返回函式值

void main() //主函式

} (5)在另外的一些操作符中,卻千萬不能返回引用:+-*/ 四則運算符。它們不能返回引用,effective c++[1]的item23詳細的討論了這個問題。

主要原因是這四個操作符沒有side effect,因此,它們必須構造乙個物件作為返回值,可選的方案包括:返回乙個物件、返回乙個區域性變數的引用,返回乙個new分配的物件的引用、返回乙個靜態物件引用。根據前面提到的引用作為返回值的三個規則,第2、3兩個方案都被否決了。

靜態物件的引用又因為((a+b) == (c+d))會永遠為true而導致錯誤。所以可選的只剩下返回乙個物件了。

4、引用和多型

引用是除指標外另乙個可以產生多型效果的手段。這意味著,乙個基類的引用可以指向它的派生類例項。

【例7】:

class a;

class b:public a;

b b;

a &ref = b; // 用派生類物件初始化基類物件的引用

ref 只能用來訪問派生類物件中從基類繼承下來的成員,是基類引用指向派生類。如果a類中定義有虛函式,並且在b類中重寫了這個虛函式,就可以通過ref產生多型效果。

引用總結

(1)在引用的使用中,單純給某個變數取個別名是毫無意義的,引用的目的主要用於在函式引數傳遞中,解決大塊資料或物件的傳遞效率和空間不如意的問題。

(2)用引用傳遞函式的引數,能保證引數傳遞中不產生副本,提高傳遞的效率,且通過const的使用,保證了引用傳遞的安全性。

(3)引用與指標的區別是,指標通過某個指標變數指向乙個物件後,對它所指向的變數間接操作。程式中使用指標,程式的可讀性差;而引用本身就是目標變數的別名,對引用的操作就是對目標變數的操作。

(4)使用引用的時機。流操作符《和》、賦值操作符=的返回值、拷貝建構函式的引數、賦值操作符=的引數、其它情況都推薦使用引用。

8樓:匿名使用者

int x=5;

int &p=x; // p指向了x用於函式的傳址引數, int test(int &m, int n)

m是傳址,n是傳值

9樓:匿名使用者

取位址符,比如有個變數a。&a就是說a在記憶體的位址

c++中的?是什麼意思.還有:是啥 5

10樓:a羅網天下

c++中的「?」是三目條件運算子之一的表示式一(?:)

"?"運算子的含義是:先求表示式1的值,如果為真,則執行表示式2,並返回表示式2的結果;如果表示式1的值為假,則執行表示式3,並返回表示式3的結果。

「:」用法1表示機構內位域的定義(即該變數佔幾個bit空間),用法2是建構函式後加冒號是初始化表示式:

如:istack( int capacity ) : _stack( capacity ), _top( 0 )

c++中的算術運算子包括基本的算術運算子和自增、自減運算子。由算術運算子、運算元和括號構成的表示式稱為算術表示式。

基本算術運算子有:+(加)、-(減或負號)、*(乘)、/(除)、%(取餘)。其中「-」作為負號時為一元運算子,其餘都為二元運算子。

這些基本算術運算子的意義與數學中相應符號的意義是一致的。它們之間的相對優先順序關係與數學中的也是一致的,即先乘除、後加減,同級運算自左向右進行。使用算術運算子要注意以下幾點:

1、「%」是取餘運算,只能用於整型運算元。表示式a%b的結果為a/b的餘數。 「%」的優先順序與「/」相同。

2、當「/」用於兩整型運算元相除時,其結果取商的整數部分,小數部分被自動捨棄。因此,表示式1/2的結果為0,這一點需要特別注意。

3、c++中的「++」 (自增)、 「--」 (自減)運算子是使用方便且效率很高的兩個運算子,它們都是一元運算子。這兩個運算子都有前置和後置兩種使用形式。

11樓:足壇風行者

c++中?和:單獨使用沒有特殊含義,合起來用時可以表達三目運算子,又稱條件運算子。

條件運算子強大而獨特,它提供了一種表達簡單 if-else 語句的簡寫方法。該運算子由問號(?)和冒號(:)組成,其格式如下:

《表示式1>?《表示式2>:《表示式3> ;

含義是: 先求表示式1的值,如果為真,則執行表示式2,並返回表示式2的結果 ; 如果表示式1的值為假,則執行表示式3 ,並返回表示式3的結果。

擴充套件資料

三目運算子一定要用於賦值語句,三目運算子的應用例項:

例如:x < 0 ? y = 10 : z = 20;

這個語句由 3 個子表示式組成,使用問號 ? 和冒號 : 分隔。這 3 個表示式分別是:x<0,y = 10 和 z = 20。

計算方式是如果條件x < 0是真的,則執行y = 10語句;否則,執行z = 20。

所以當x=-1時,x < 0 ? y = 10 : z = 20的最終結果為y=10。

c 中的引用到底都有什麼用處,請問C 中的引用符號“ ”到底怎麼使用?

比如int f int a 當你如下呼叫時 int b f b 編譯器會把b的值賦給a,在函式體內操作a 而如果函式定義為 int f int a 當你呼叫時,沒有這個賦值的過程,因為此時a是實參的別名,相當於直接操作了實參b 從這個例子可以看到引用的兩個特性 1 節約空間,少了一個實參賦值給形參的...

學C語言有什麼用,學C語言有什麼用?

c語言是計算機技術的基礎,是資訊科技的基礎,是自動化技術的基礎,是很多電子裝置能夠執行的基礎 學了c語言,你可以開發 1.作業系統 2.各種底層軟體 3.各種嵌入式系統開發 4.各種同硬體打交道的軟體開發 有很大的用吧,大學裡很大都學 學c語言有什麼用? 寂寞小鳥 剛開始來學c語言絕大數同學都是牴觸...

維C有什麼作用,維C有什麼用?

維生素c又叫抗壞血酸,是一種水溶性維生素。在所有維生素中,維生素c是最不穩定的。在貯藏,加工和烹調時,容易被破壞。它還易被氧化和分解。一 維生素c主要生理功能 1 促進骨膠原的生物合成。利於組織創傷口的更快癒合 2 促進氨基酸中酪氨酸和色氨酸的代謝,延長肌體壽命。3 改善鐵 鈣和葉酸的利用。4 改善...