指標傳遞問題小結

2021-09-14 06:41:24 字數 969 閱讀 4223

#include

#include

#include

void

fun(

char

* p)

intmain

(void

)

執行結果中並未輸出字串hello其實這裡主函式呼叫fun函式,形參向實參傳遞引數的時候,發生的是拷貝。在fun函式中對區域性指標變數p的任何修改都不會影響到主函式中的指標變數p。

值傳遞,形參的修改不會影響到實參

由於實參是乙個一級指標的位址,要傳入這樣的位址給形參,這需要乙個對應型別的二級指標來接受一級指標的位址。

#include

#include

#include

void

fun(

char

** p)

intmain

(void

)

指標的位址傳遞經常用在沒有頭節點的鍊錶中,因為在建立和銷毀鍊錶時,頭指標的值需要被修改。如果用一級指標接收發生的是值傳遞,要修改其值必須用二級指標接收一級指標的位址,在這個位址對應的記憶體塊進行修改。

用二級指標操作一級指標的記憶體往往讓人難以理解,甚至往往還會發生記憶體洩漏的風險,在c++中,可以通過指標的引用簡化這樣的記憶體模型,實際上在編譯器內部還是處理為二級指標,當使用時,解引用為一級指標,如對無頭結點鍊錶的初始化、銷毀等操作,也可以使用一級指標的引用簡化問題的處理

pp

#include

using namespace std;

void

fun(

char

*&p)

intmain()

理解一級指標的引用傳遞,編譯器在記憶體中開闢了臨時量,用於儲存引用變數的位址,一但使用引用變數就進行解引用。所以在外部看來,似乎就是使用了原變數 。

指標問題小結

最近幾天複習了一下指標,總結記錄一下。區分幾個概念 指標陣列 指標的陣列,即本質是乙個陣列,陣列的每乙個元素是乙個指標。陣列指標 陣列的指標,即本質是乙個指標,指標指向的物件必須是乙個陣列。指標函式 返回指標的函式,本質是乙個函式,返回型別是乙個指標 int p指標陣列,int p 陣列指標,int...

指標使用小結 指標傳遞與指標所指空間賦值

結合示例 總結一下 指標的各個概念及指標變數在函式中的傳遞與應用 如 int a 3 int point a 設記憶體分布如下 address 變數名值 0x300000a3 0x500000 point 0x300000 指標變數 用於儲存其他變數的空間位址 point 0x300000 指標變數...

c 指標與函式引數傳遞 小結

1.函式引數傳遞的語義與初始化的語義完全一致,即可以將引數傳遞理解為乙個初始化的等式。2.指標變數儲存的是所指物件的位址,稱為指標變數的值。3.當用乙個指標a初始化指標b時,指標b儲存的是指標a所指物件的位址。char a new char 10 char b a 由於指標變數a,b指向同乙個物件,...