指標傳值易注意點

2021-08-04 19:51:31 字數 712 閱讀 3950

struct _classa 

classa, pclassa

fun(classa *p)

// 呼叫fun後,會發現p指標還是指向null

classa *p = null;

fun(p);

p指標還是指向null,原因如下:

傳進函式fun的引數p其實是p的乙個副本p0,都指向null

所以p = &a;只是把a變數的位址賦給了p0,也就是p0指向了a的記憶體空間,這樣當函式fun執行完後,p當然還是指向null,沒有被賦值

修改方法:

直接給p分配一款記憶體,這樣p0其實也指向p的那塊記憶體。

所以修改p0的值,也就是修給p的值

fun(classa *p)

classa *p = new classa();

fun(p);

傳值 傳引用 傳指標

收藏 相關概念 c 三種傳遞引數方式 傳引數的值 稱值傳遞,簡稱傳值 傳引數的位址 稱位址傳遞,簡稱為傳址 和引用傳遞 稱為傳引用 相應的函式傳值呼叫,傳址呼叫和傳引用呼叫 形參 實參 函式定義時參數列中的引數稱為形式引數,簡稱形參 函式呼叫時參數列中的引數稱為實際引數,簡稱實參。實參和形參之間的資...

傳值 傳引用 傳指標

相關概念 c 三種傳遞引數方式 傳引數的值 稱值傳遞,簡稱傳值 傳引數的位址 稱位址傳遞,簡稱為傳址 和引用傳遞 稱為傳引用 相應的函式傳值呼叫,傳址呼叫和傳引用呼叫 形參 實參 函式定義時參數列中的引數稱為形式引數,簡稱形參 函式呼叫時參數列中的引數稱為實際引數,簡稱實參。實參和形參之間的資料傳遞...

傳值 傳指標 傳引用

c語言的規則很簡單 所有的引數都是傳值呼叫 在這句話的基礎上,我們來分析值傳遞 指標傳遞 引用傳遞的區別。一 值傳遞 值傳遞,這與c函式的性質有關。c函式的所有引數均以 傳值呼叫 方式進行傳遞,這意味著函式值將獲得引數值的乙份拷貝,函式可以放心修改這個拷貝值,而不必擔心會修改呼叫程式實際傳給他的引數...