什麼時候用指標形參?什麼時候用引用形參?

2021-07-16 17:13:53 字數 950 閱讀 2561

0.在作為引數的作用中指標和引用的共同特點是都可以在函式中改變實參物件,標準 c 中是沒有引用形參的,只能使用指標形參。

1.就函式引數傳遞數值而言,傳遞指標與傳遞引用唯一的優勢是避免拷貝,同時帶來實參被改變的風險,但是可以通過const來盡量避免。

2.就為改變實參這個目的而言,指標對於引用的優勢在於當你有可能需要傳入乙個空的概念*(尚未創立的物件,空指標可以表示,而引用無法表示空的概念)的時候,指標還有乙個優勢是引用不利於理解**。

比如問題:

(如void xchange1(int *n1,int *n2))或引用形參(如void xchange2(int &n1,int &n2))。

在呼叫fun的地方,開發者馬上能警覺pi所指內容可能在fun中改變,而看不出對ri的影響。有人可能會說使用const, 那也是在定義的地方,在呼叫的地方看不見,讀**的人總得多看一層。

3.就為改變實參這個目的而言,引用對於指標在於其存在是為了降低指標靈活性帶來的風險,指標形參不僅可以將資料的引用傳入函式,還可以在函式內改變這個指標,也就是說在函式內部可以改變呼叫域的變數(而不僅僅是物件)

4.相比起引用,指標有這些特點:

指標變數可以被重複賦值或更改(引用則不行,一經賦值不能再改)

指標變數可以為空(引用必須指向具體物件)

#include 

#include

using

namespace

std;

void xchange1(int *n1,int *n2);

void xchange2(int &n1,int &n2);

int main(void)

void xchange1(int *n1,int *n2)

void xchange2(int &n1,int &n2)

什麼時候用exists 什麼時候用in

in not in exists not exists 使用exists,oracle會首先檢查主查詢,然後執行子查詢直到它找到第乙個匹配項,這就節省了時間。oracle在執行in子查詢時,首先執行 子查詢,並將獲得的結果列表存放在乙個加了索引的臨時表中。在執行子查詢之前,系統先將主查詢掛起 待子查...

什麼時候用GET?什麼時候用POST?

get和post兩種方法都是將資料送到伺服器,但你該用哪一種呢?http標準包含這兩種方法是為了達到不同的目的。post用於建立資源,資源的內容會被編入http請示的內容中。例如,處理訂貨表單 在資料庫中加入新資料行等。當請求無 時 如進行搜尋 便可使用get方法 當請求有 時 如新增資料行 則用p...

什麼時候用堆,什麼時候用棧?

參考文章 c 面試題之記憶體分配 一 首先,回顧一下c c 的記憶體分配機制。乙個c c 程式編譯時記憶體分為5大儲存區 堆區 棧區 靜態區 全域性區 文字常量區 儲存字串常量 程式 區 存放二進位制程式 下面主要闡述前面三個。1 靜態儲存區域 靜態儲存區域的 內存在程式編譯時就已經分配好,這塊內存...