什麼時候使用引用、什麼時候使用指標
- 程式設計師能修改呼叫函式中的資料物件
- 通過傳遞引用而不是整個資料–物件,可以提高程式的執行速度一般的原則:對於使用引用的值而不做修改的函式:
- 如果資料物件很小,如內建資料型別或者小型結構,則按照值傳遞
- 如果資料物件是陣列,則使用指標(唯一的選擇),並且指標宣告為指向const的指標
- 如果資料物件是較大的結構,則使用const指標或者引用,已提高程式的效率。這樣可以節省結構所需的時間和空間
- 如果資料物件是類物件,則使用const引用(傳遞類物件引數的標準方式是按照引用傳遞)對於修改函式中資料的函式:
- 如果資料是內建資料型別,則使用指標
- 如果資料物件是陣列,則只能使用指標
- 如果資料物件是結構,則使用引用或者指標
- 如果資料是類物件,則使用引用
相關推薦
引用、指標
&的三個含義:位與、引用變數說明符、取地址運算子 *的三個含義:乘、指標變數說明符、取值運算子 【引用】:引用變數與被引用變數同時指向同一記憶體地址,其一改變,兩者都改變。 &——引用變數說明符,xa——引用變數(型別要與x一致,且不能再引用其他變數) #include <
C++ 筆記:引用、指標和 const 限定符
引用 引用必須初始化,也就是說,引用從“出生”開始就必須繫結至另一個物件,且必須“從一而終” 引用必須繫結至物件,而不能繫結至字面值或表示式計算結果 引用的型別要和其繫結的物件嚴格匹配,但有兩個例外情
c++primer學習日記0——引用、指標及const
·引用必須被初始化,且初始值必須是一個物件,像 int &i = 10 這就是錯誤的。 ·必須同類型引用,double a = 3.14; int &b = a;這是錯誤的。 ·指標只能存地址,不能把int變數賦值給指標 ·初始化所有指標 ·void*
右值引用、左值引用、指標、RVO優化
這是我第一次真正意義上發技術部落格,對C++很多特性我瞭解的並不深,直到今天我才敢評論總結出來。 上面四個名詞,相信很多初學者會疑惑(我也不例外),什麼時候做什麼事?最開始,我的程式碼這麼寫: int max(int a, int b){ return a>b?a:
5、【C++】指標/引用(指標和引用的區別)
一、指標 int p=12; int *q; int *q=&p; 這裡p為int型別的變數,&p就是p的記憶體地址,*q是一個int型別的變數(是一個值),q為指標是地址,int q=&p;把p的地址賦給了指標q,所以q就
普通值、指標、引用作為函式引數時的理解
很多時候,我們都會看到在教科書上寫著各種值傳遞,引用傳遞,一看一大堆,有時候看的還容易迷糊,什麼情況該怎麼傳總是區分不清,下邊我們用一小版塊並結合程式碼例項講解下。 一、值傳遞 // 普通值傳遞 void test(int num) {
什麼時候使用引用、什麼時候使用指標
程式設計師能修改呼叫函式中的資料物件 通過傳遞引用而不是整個資料–物件,可以提高程式的執行速度一般的原則:對於使用引用的值而不做修改的函式: 如果資料物件很小,如內建資料型別或者小型結構,則按照值傳遞 如果資料物件是陣列,則使用指標(唯一的選擇),並且指標宣告為指向const的指標 如果資料物件是較大
(轉)C++ 值傳遞、指標傳遞、引用傳遞詳解
一直以來對函式的值傳遞引用傳遞理解很模糊,這篇文章可以說是給自己掃盲了。 值傳遞:實參不會發生改變,是因為形參傳遞的是不是實參的源地址(形參和實參地址不一樣)。不影響實參 指標傳遞:本質也是值傳遞,只不過傳遞的是實參的地址(形參實參的地址一樣) 地址的副本 引用傳遞:傳遞的是實參的別名,操作地址就是實參
C++的函式的傳值呼叫、指標呼叫、引用呼叫的聯絡區別
當呼叫函式時,有兩種向函式傳遞引數的方式: 呼叫型別 描述 傳值呼叫 該方法把引數的實際值複製給函式的形式引數。在這種情況下,修改函式內的形式引數對實際引數沒有影響。 指標呼叫 該方法把引數的地址複製給形式引數。在函式內,該地址用於訪問呼叫中要用到
C++ 值傳遞、指標傳遞、引用傳遞詳解
而關於值傳遞,指標傳遞,引用傳遞這幾個方面還會存在誤區, 所有我覺的有必要在這裡也說明一下~ 下文會通過例子詳細說明哦 值傳遞: 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的(實參->形參),引數的值只能傳入
指標和引用、陣列的區別
指標和引用的區別 指標儲存的是所指物件的地址,引用是所指物件的別名,指標需要通過解決引用間接訪問,而引用是直接訪問; 指標可以改變地址,從而改變所指的物件,而引用必須從一而終; 引用在定義的時候必須初始化,而指標不需要; 指標有指向常量的指標和指標常量,而引用沒
指標陣列陣列傳參、指標引用傳參
指標和陣列作為引數傳入函式時,傳入的是地址,即指向變數的地址和陣列的首地址,可以在函式中改變指標或陣列的值,但本質上它們還是值的傳遞(區別於變數的值傳遞的是:變數值傳遞不會改變實參原來的值。),我們無
C++中為什麼要用虛擬函式、指標或引用才能實現多型?
學過C++的都知道,要實現C++的多型性必須要用到虛擬函式,並且還要使用引用或者指標,以前學習的時候書本上也是這麼說, 但是書本上沒有說為什麼? 其實只要你認真思考過這個問題你會有三個疑問: 為什麼要用虛擬函式? 為什麼要用指標或者引用? 為什麼使用派生類和基類物件
迭代器和指標、指標和引用
迭代器和指標的區別: 相同的點: 都可以進行整數操作進行加減運算,實現當前位置的移動;支援同類型的進行減法操作,得到兩個指標之間的距離。 不同點: 迭代器: 1、 迭代器不是指標是類模版,表現像指標。它模擬了一些指標的功能, 通過過載指標
C++的const、指標、引用總結
const與指標型別 根據寫法區分 (1)不可以通過指標來改變指標所指向的變數 const int *p=NULL; int const *p=NULL; 上面兩種寫法完全等價,舉個例子: int x=3; const int *p=&
C++ 虛擬函式 6-- 三種呼叫虛擬函式的方式比較->通過物件、指標、引用
#include <iostream> #include <string> using namespace std; /*--------------------------------- 13-9 三種呼叫虛擬函式的方式比較 --------
C++中值傳遞、指標傳遞、引用傳遞
1. 值傳遞:形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的(實參->形參),引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。 void swap(int a,int b
C++三種引數傳遞方法(值傳遞、指標傳遞、引用傳遞)的一些知識
C++的函式引數傳遞有三種方法:值傳遞、引用傳遞、指標傳遞 。其中引用傳遞和指標傳遞幾乎一樣,只不過引用傳遞在使用時比指標更安全。 (1)關於函式返回一個物件 當你的函式返回型別是【非引用】的型別時,return時先呼叫該類的拷
C/C++語言引數傳遞----值傳遞、引用傳遞、指標傳遞、指標引用傳遞
1.值傳遞 void f( int p){ printf("\n%x",&p); printf("\n%x",p); p=0xff; } void main() { int a=0
面試題4:陣列、指標、引用的聯絡區別
陣列和指標??? 從兩個方面來看,一是作為一個語言,陣列是必須要支援的一種陣列型別,原因很簡單,陣列是線性表的直接體現。而從編譯器設計者的角度來看,如果為陣列專門設計一套實現標準會非常繁雜(事實上,後來C++完成了這一任務,它就是標準庫中的vector容器)。這一對矛盾最後