為什麼使用了指標形參,但是返回值還是沒有改變

2022-07-15 01:54:13 字數 498 閱讀 3801

今天遇到乙個問題,如題,下面上例子

1

void get(node*head)27

8int

main()

9

程式一執行就會報錯,後來想了想,想明白了,修改**如下

1 node* get(node*head)28

9int

main()

10

兩個**主要修改就是get函式增加了返回值。那為什麼就正確了呢,我們的指標形參不應該直接返回我們修改後的值嗎。你仔細想想我們指標在主函式中被賦值為空,也就是並沒有指向任何記憶體,然後到了get函式,我們的指標被賦值了,指向了乙個新的記憶體塊。

我們僅僅只看這些**,你就會發現我們在get函式中,其實是對指標這個型別的值進行了改變,而這個我們所說的指標形參是對我們指標指向的記憶體中的元素進行改變。所以這裡的我們的指標head就像int一樣是個值傳遞。如果你把node*改成int,就很清晰了。所以說到底還是概念和理解的不到位。

函式返回值和形參

函式包括了除函式名以外還有返回值和形參。這個形參包括了傳入引數和傳出引數 傳入引數 就是數值的傳遞。在函式中不會修改這個引數,不會修改呼叫這個函式的函式的值。例如void exchange int a,int b int main 輸出的結果是 a 4 b 5 這是傳參,僅僅是乙個數值的傳遞。在呼叫...

常指標 常引用作為形參和返回值

include using namespace std const int n 10 intsum1 const int p return sum void sum2 const int p,int s 常量指標,普通指標,無返回 const int sum3 const int p,int s 指...

為什麼 HANDLE 返回值不同

如果你注意各種返回 handle 值的函式,你會發現它們有些返回 null 如 createthread 而有些則返回 invalid handle value 如 createfile 你不得不查詢文件找出每種函式在失敗時返回什麼。為什麼返回值不統一?如你所猜測,是歷史原因。這些值是用於相容16位...