色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

C語言,自定義函數(shù)要注意些什么?

老白2年前31瀏覽0評論

C語言中自定義函數(shù)一個最常見的注意點就是區(qū)分“值傳遞”和“址傳遞”了。“值傳遞”和“址傳遞”就一個字不一樣,而且發(fā)音還非常的接近,但就是天壤之別。許多初學C語言的小伙伴經(jīng)常搞不清通過函數(shù)傳遞一個數(shù)據(jù)值和傳遞一個地址,以至于C程序的運行結(jié)果大相徑庭。本回答就來詳細講解下C語言中“址傳遞”和“值傳遞”的區(qū)別。


一、值傳遞和址傳遞的C程序代碼

為了說清“值傳遞”和“址傳遞”之間的區(qū)別,我們先看一段C程序代碼,如下:

上述C程序代碼非常簡單:在C程序的main函數(shù)中定義了兩個整型變量para1與para2,初始值分別是1和2;還有一個指針變量pInt,初始值是變量para2的地址。

  • 在C程序的main函數(shù)中,先調(diào)用了自定義函數(shù)ValueTrans,并且把變量para1作為參數(shù)。在自定義函數(shù)ValueTrans中,將變量para1重新賦值為11。在調(diào)用完函數(shù)ValueTrans后輸出變量para1的值,看看是多少;

  • 在C程序的main函數(shù)中,再次調(diào)用了自定義函數(shù)AddrTrans,并且把指針pInt作為參數(shù)。在自定義函數(shù)AddrTrans中,將指針pInt指向的值重新賦值為22。在調(diào)用完函數(shù)AddrTrans后輸出變量para2的值,看看是多少;

現(xiàn)在我們看看這段C程序的運行結(jié)果:

驚不驚喜?意不意外?

二、值傳遞和址傳遞的解釋

現(xiàn)在我們來解釋下上述C程序代碼為何是這么個運行結(jié)果。

1、值傳遞

上述C程序代碼調(diào)用函數(shù)ValueTrans,把變量para1作為參數(shù),注意就是把變量para1的值1作為參數(shù)。

在具體執(zhí)行函數(shù)ValueTrans時,系統(tǒng)自己默默地、悄悄地在某一個地方新建了一個也叫作para1的整型變量。這個整型變量para1可不是C程序代碼main函數(shù)中的那個para1.我們可以把main函數(shù)中的para1變量看做是main_para1,把函數(shù)ValueTrans中的para1看做是ValueTrans_para1.那么在函數(shù)ValueTrans中其實是把11賦值給了變量ValueTrans_para1,至于變量main_para1嘛,紋絲不動!

所以在C程序main函數(shù)中,最后變量para1的值還是1.

2、址傳遞

上述C程序代碼調(diào)用函數(shù)AddrTrans,把指針pInt作為參數(shù),注意此時就是把變量para2的地址作為參數(shù),這就有意思啦!

在具體執(zhí)行函數(shù)AddrTrans時,系統(tǒng)自己同樣地、悄悄地在某一個地方新建了一個也叫作pInt的指針變量。但是這個指針變量pInt的值就是main函數(shù)中的那個pInt的值.換句話說,兩個指針變量pInt同時指向了C程序中main函數(shù)的變量para2。那么在函數(shù)AddrTrans中把22賦值給了指針pInt指向的值,其實也就改變了main函數(shù)中的變量para2的值,太神奇了!這就是C語言指針的魅力所在!

所以在C程序main函數(shù)中,最后變量para2的值就變成了22.


上述是C語言編程中自定義函數(shù)時要注意的一個地方。你明白了嗎?