- C/C++實(shí)踐進(jìn)階之道:寫給程序員看的編程書
- 陳黎娟
- 783字
- 2020-06-29 11:37:42
5-2 函數(shù)的基本概念
總結(jié)前面,可以發(fā)現(xiàn)函數(shù)定義的一般形式:
類型標(biāo)識符函數(shù)名([形式參數(shù)列表])
{
局部變量定義;

函數(shù)調(diào)用的一般形式:函數(shù)名([實(shí)參列表]);
調(diào)用一個(gè)函數(shù)非常簡單,如前所見,只要輸入正確的參數(shù),一個(gè)語句就可以調(diào)用一個(gè)函數(shù),而這個(gè)函數(shù)可能具備非常強(qiáng)大的功能。
在使用函數(shù)帶來的巨大好處的時(shí)候,請回顧一下,你是否掌握了以下概念。
1.函數(shù)參數(shù):形參和實(shí)參
在調(diào)用函數(shù)時(shí),大多數(shù)情況下,主調(diào)函數(shù)和被調(diào)函數(shù)之間有數(shù)據(jù)傳遞關(guān)系。兩者的數(shù)據(jù)傳遞是通過函數(shù)參數(shù)完成的。
這個(gè)概念也有些像數(shù)學(xué)中的函數(shù)的概念,f(x)中,x是參數(shù),輸入不同的x,f(x)的結(jié)果也不盡相同。
在C語言中,定義函數(shù)時(shí)函數(shù)名后面括號中的變量名稱為“形式參數(shù)”/“形參”;在調(diào)用函數(shù)時(shí),函數(shù)名后面的各種表達(dá)式稱為“實(shí)際參數(shù)”/“實(shí)參”。
2.函數(shù)的返回值
在數(shù)學(xué)中f(x)的結(jié)果要傳遞出來,在C語言中,提供的是差不多相同的機(jī)制,可以采用return語句的一個(gè)結(jié)果,這個(gè)結(jié)果被稱為是函數(shù)的返回值。
不過我們要注意以下三點(diǎn):
(1)C語言中,可以有其他機(jī)制返回需要的數(shù)據(jù),比如后面要講的指針,還有C++中開始提供的引用機(jī)制。
(2)對于比較專業(yè)的程序員來說,return語句一般返回一個(gè)非0值或0值,用來表示程序的成功運(yùn)行或失敗,這在很多專業(yè)代碼中經(jīng)常見到。
(3)函數(shù)執(zhí)行到return語句肯定結(jié)束,但return語句不一定只出現(xiàn)在函數(shù)的最后一行。
3.為什么要為被調(diào)函數(shù)做聲明
這是一個(gè)和編譯相關(guān)的語法形式。
什么是被調(diào)函數(shù)聲明?其實(shí)就是示例5-3中main()主函數(shù)之前的這句int sum(int n);提前聲明了一個(gè)函數(shù)的定義形式。方便編譯器的一種技巧。
當(dāng)被調(diào)用函數(shù)的定義發(fā)生在主調(diào)函數(shù)之前,即可省掉函數(shù)說明。
最好的方法是在文件的開始就為所有被調(diào)函數(shù)做說明。
實(shí)際上,在源代碼文件開始的#include語句,往往就是引入其他庫函數(shù)中的函數(shù)調(diào)用形式,只有在鏈接的時(shí)候,才會去尋找到具體的實(shí)現(xiàn)模塊,然后把代碼鏈接進(jìn)來。
- ASP.NET Core:Cloud-ready,Enterprise Web Application Development
- JMeter 性能測試實(shí)戰(zhàn)(第2版)
- Banana Pi Cookbook
- Python數(shù)據(jù)分析從0到1
- Java Web程序設(shè)計(jì)任務(wù)教程
- PhoneGap:Beginner's Guide(Third Edition)
- 微信小程序項(xiàng)目開發(fā)實(shí)戰(zhàn)
- Mastering openFrameworks:Creative Coding Demystified
- C++反匯編與逆向分析技術(shù)揭秘(第2版)
- 大學(xué)計(jì)算機(jī)基礎(chǔ)實(shí)驗(yàn)指導(dǎo)
- 從零開始學(xué)Python大數(shù)據(jù)與量化交易
- Python應(yīng)用開發(fā)技術(shù)
- Web前端測試與集成:Jasmine/Selenium/Protractor/Jenkins的最佳實(shí)踐
- 關(guān)系數(shù)據(jù)庫與SQL Server 2012(第3版)
- Serverless工程實(shí)踐:從入門到進(jìn)階