中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中函數使用的注意事項有哪些

發布時間:2022-03-18 15:38:52 來源:億速云 閱讀:264 作者:iii 欄目:大數據

本文小編為大家詳細介紹“C語言中函數使用的注意事項有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“C語言中函數使用的注意事項有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

我們都可以將其理解為一個有輸入輸出的「功能黑箱」,看下圖:

C語言中函數使用的注意事項有哪些

就類似給函數一個 x 值,可以求結果一樣,給函數一些輸入參數,也可以得到相同的輸出結果。

1. 模塊化編程

為什么要使用函數呢?其實是為了更好的維護軟件的功能以及實現模塊化編程。

你可以想下如果把所有的功能都寫在 main 函數中,那該多么可怕,估計沒人會讀你寫的代碼。

通過使用函數可以使我們的軟件邏輯性更強,單獨的功能寫在單獨的函數中,還可以方便后期復用等等,好處還有很多實在列舉不完。

其中比較重要的作用要說:模塊化編程代碼復用了,建議你去找實際的項目看看代碼組成,自然就理解了。

2. 函數的副本機制

很多初學者都搞不清楚函數的副本機制,例如下面的交換函數:

C語言中函數使用的注意事項有哪些

這個函數是錯誤的,因為函數在進行參數傳遞的時候,會將傳入參數 m,n 的值拷貝給函數的形式參數 a,b。

因此在函數內部交換的是形式參數 a,b 的值,而不是交換傳遞時 m,n 變量的值。

函數的副本機制從內存的角度來說就是:在函數進行參數傳遞的時候,實參和形參的內存地址是不同的

這是這個例子的輸出結果,每個人的機器可能都不同:

C語言中函數使用的注意事項有哪些

可以看到變量 m 和 a,以及 n 和 b 的內存地址均不同,因此對值的交換也是不起作用的。

但是使用指針就完全不同了,看下面這個例子:

C語言中函數使用的注意事項有哪些

這個函數才是正確的交換函數,為什么呢?

因為我們這里傳遞的是 m,n 的內存地址,即傳遞的是指針,所以在函數內部對指針解除引用就可以直接訪問這個地址的內容了,這是指針提供的特性。

那么是否就意為著傳遞指針就沒有副本機制了呢?這也是錯誤的,指針也是變量,本質上與 int 沒有區別,只是特性不同罷了。

上面例子在傳遞指針的時候,也是將 m,n 的地址拷貝給 pa,和 pb,也是存在副本機制的。

只不過這里拷貝的是地址而不是值,在內部通過指針的解引用操作可以直接訪問 m,n 的內存地址,進而進行交換。

因為指針非常重要,所以建議你自己運行這個程序,可以看到輸出結果中 pa 指向的是 m 的內存地址,而 &pa 是指針變量 pa 的內存地址,這兩個千萬不要搞混了。

一定時時刻刻記住下面的結論:

1. 一個 int 變量有自己的內存地址,也有自己存儲的整數值

2. 一個指針變量有自己的內存地址,也有自己存儲的指向地址值

3. 變量在內存中都有自己的地址和其存儲的內容

3. 函數的參數傳遞順序

VC 和 gcc 編譯器計算函數參數的順序都是從右向左,這個特點一點要記住,面試可能會問到。

你可以使用下面這個程序去驗證,程序比較簡單,留作給你的思考(不去思考就等于浪費時間看 cd 這篇文章了):

C語言中函數使用的注意事項有哪些

讀到這里,這篇“C語言中函數使用的注意事項有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

佛学| 凉城县| 无棣县| 乾安县| 东海县| 迁安市| 保定市| 宁强县| 无棣县| 柳林县| 修文县| 永新县| 宁蒗| 宜丰县| 景谷| 来凤县| 渭源县| 阜南县| 清镇市| 花莲县| 常宁市| 辉县市| 保山市| 洛扎县| 岳普湖县| 栾川县| 焦作市| 麻栗坡县| 巴里| 安化县| 乐业县| 玉溪市| 秦安县| 台东市| 普安县| 五华县| 连城县| 家居| 德令哈市| 凯里市| 嫩江县|