子函式與父函式的關係。(傳值和傳指標)

2021-09-14 03:41:03 字數 893 閱讀 9888

在我們學習了將函式分為主函式和子函式,通過呼叫的方法來進行編寫程式,那麼我們通常會直接在子函式中

列印想要的值,在主函式中直接呼叫,可是,在主函式中,原來的值是否真的改變,或是得到了我們想要的結果呢?

我們來通過乙個簡單的函式來了解一下:

1.傳值

所以說,這樣的方法是錯誤的。

錯誤原因:

只是在子函式中交換值,而對主函式沒用影響。

2.傳位址

只是將位址傳如了子函式中,通過交換只是將a,b的位址進行了交換。而數值依舊沒改變,只是改變了數值的位址。

3.傳位址並且解引用

void swap(int *p1,int *p2)

int main()

由此我們可以得出結論:

子函式的改變要想影響到父函式,必須要有如下條件

1.傳指標 2.解引用

函式的傳值與傳址

這裡介紹一下,函式引數傳遞方式 傳值與傳址.希望看過後,大家對函式的了解更深刻.一 傳址方式 傳址方式是通過引用來實現在。還是我的習慣,用事實說話。看下面例子。例1 程式開始 fun1 int a,int b 這裡告訴編譯器,這個函式是傳址的,不是傳值的,所以所引用的引數在函式退出後值會改變 inc...

函式傳值還是傳指的問題案例

函式傳值還是傳指的問題案例 向函式傳引數時,一般而言,傳入非const修飾的指標時,就表示,要在函式中修改這個指標的指向記憶體中的資料,如果是傳值,那麼無論在函式內部怎麼修改這個值,也不會影響到傳過來的值,因為傳值可以看作只是記憶體拷貝。說起來有點基礎的都懂,但是 請問下面的寫法有什麼問題 void...

子函式修改父函式的值

交換兩個數的值這個程式我們之前已經寫過了,通過乙個中間變數來實現 如下 void swap err1 int a,int b int main 這個程式的執行結果如下 可以看到在函式中列印出來的結果調換了a,b的值但在主函式中,兩個數的值並沒有被調換掉。void swap int p1,int p2...