關於函式傳參及返回值

2021-05-22 08:42:50 字數 880 閱讀 2675

很多剛學指標的人多會遇到這樣的情況,就是你給乙個函式傳遞乙個指標變數,在這個函式中為這個指標申請空 間,賦值,可是等函式結束後這個指標還是乙個空指標,對其的操作編譯器會報段錯誤或乾脆給你乙個莫名其妙的值,這是乙個隨機數。

如:#include

#include

int my_fun(int *p)

int main(int argc, char **argv)

這個函式最終列印的結果是乙個隨機數。這是為什麼呢?

這裡先說一點函式呼叫時候的事情:

函式在被呼叫的時候,系統動態的為其在堆疊區非配一段空間,這段空間的作用是:

1、 在進入函式前儲存環境變數和返回位址。

2、 在進入函式時儲存實參的拷貝。

3、 在函式體內,儲存區域性變數。

在這裡可以看出一點什麼,就是,在呼叫函式的時候,系統為函式動態的分配了一段空間,且為實參做了拷貝,在函式中的『p』只是主函式中『p』的乙個拷貝, 我們申請空間、賦值等操作都是對這個拷貝進行的。當函式體結束的時候,這個拷貝的生命也就結束了,系統收回了為函式分配的空間,包括這個拷貝。這就是為什 麼我們申請空間、賦值等操作看起來都沒有效果。

解決這個問題有多種方法,這裡就介紹一點:

如下就可以解決這個問題:

#include

#include

int *my_fun(int *p)

int main(int argc, char **argv)

在這裡通過返回值,是函式中的『p』的生命期延長了,最終就達到了我們預期的效果。下面這個也 可以完成。

#include

#include

int my_fun(int *p)

int main(int argc, char **argv)

函式傳參以及函式的返回值

1.形式 其中在函式內部的a叫做形參,而呼叫函式裡的100叫做實參 function 在此處傳參 fn1 100 function fn1 a 可以相當於 fn1 100 function fn1 var a 100 但不能這麼寫2.也可以傳多個引數,如 fn1 100,px function fn...

初識python 函式 定義,傳參,返回值

菜鳥教程基礎知識講解的非常全面,內容選擇我認為的重點輸出一遍 你可以定義乙個由自己想要功能的函式,以下是簡單的規則 def fun arg pass return arg 函式呼叫語法 fun arg 將引數傳入已經定義好的函式中,便可以呼叫此函式 def printme str 列印任何傳入的字串...

函式返回值和形參

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