摘要:在寫代碼創(chuàng)作一個(gè)較大的模塊時(shí)通常需要將大模塊分解為幾個(gè)小模塊來共同完成函數(shù)即可籠統(tǒng)的理解為小模塊合理的構(gòu)架運(yùn)用小模塊有利于讓別人讀懂我們的代碼我們之前了解到一個(gè)程序必須要有一個(gè)函數(shù)即主函數(shù)構(gòu)成在主函數(shù)中還使用系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)如本文章的函
? 在寫代碼創(chuàng)作一個(gè)較大的模塊時(shí),通常需要將大模塊分解為幾個(gè)小模塊來共同完成,"函數(shù)"即可籠統(tǒng)的理解為"小模塊",合理的構(gòu)架,運(yùn)用"小模塊"有利于讓別人讀懂我們的代碼.
我們之前了解到一個(gè)程序必須要有一個(gè)函數(shù)(即main主函數(shù))構(gòu)成,在主函數(shù)中還使用c系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)(如printf,scanf),本文章的函數(shù)并非這些系統(tǒng)函數(shù),而是一些我們自己創(chuàng)作出來的函數(shù).
我們首先看一段"交換數(shù)值的代碼":
//兩個(gè)數(shù)值交換#include //"#"預(yù)處理指令 void swap(int a,int b){ printf("交換前a為%d,b為%d/n",a,b); int i;//i為數(shù)據(jù)的傳遞橋梁 i=a;//a的值賦給了i a=b;//b的值賦給了a b=i;//i的值賦給了b printf("交換后a為%d,b為%d",a,b); }int main(){ int a,b; a=1,b=2; swap(a,b); return 0;}
運(yùn)行結(jié)果為:
?下面依次解讀此代碼的運(yùn)行原理與過程:
1原理:代碼一下幾行:
void swap(int a,int b){ printf("交換前a為%d,b為%d/n",a,b); int i;//i為數(shù)據(jù)的傳遞橋梁 i=a;//a的值賦給了i a=b;//b的值賦給了a b=i;//i的值賦給了b printf("交換后a為%d,b為%d",a,b); }
為函數(shù)定義部分,一般格式如下:
數(shù)據(jù)類型或者void? 函數(shù)名(形參1,形參2,~~)
{
? ? ?函數(shù)體?
}
先看 void swap(int a,int b):
細(xì)節(jié)1:數(shù)據(jù)類型 or void? 就看這個(gè)"小模塊"有無返回值(retuen),有就是數(shù)據(jù)類型中的一個(gè),無就是 void.
細(xì)節(jié)2:若寫數(shù)據(jù)類型,則其為返回值的數(shù)據(jù)類型,即返回值為1,那就是int,為1.0,那就是float,為字節(jié)a,那就是char.
細(xì)節(jié)3:函數(shù)名(本小模塊為swap漢語為交換的意思),這個(gè)東西可以隨便寫(除了c系統(tǒng)自帶的!!!),盡量寫英文單詞.
細(xì)節(jié)4:(形參1,形參2),形參可以沒有但這對括號必須要有,形參就是接受實(shí)參傳遞過來的數(shù)據(jù),然后帶入"小模塊"去"加工",所以,形參與實(shí)參必須一一對應(yīng).例如,本代碼中main函數(shù)部分的swap(a,b)中的a傳給了"小模塊"中的"int a",main函數(shù)中的swap(a,b)中的a,b為實(shí)參,一定注意形參與實(shí)參在順序上的一一對應(yīng),并且形參的改變不影響實(shí)參的值,比如我在本程序加了一句打印實(shí)參a,b:
//兩個(gè)數(shù)值交換#include //"#"預(yù)處理指令 void swap(int a,int b){ printf("交換前a為%d,b為%d/n",a,b); int i;//i為數(shù)據(jù)的傳遞橋梁 i=a;//a的值賦給了i a=b;//b的值賦給了a b=i;//i的值賦給了b printf("交換后a為%d,b為%d/n",a,b); }int main(){ int a,b; a=1,b=2; swap(a,b); printf("實(shí)參a為%d,實(shí)參b為%d/n",a,b); return 0;}
運(yùn)行后:
?那么我們該如何改變實(shí)參?這就是下一節(jié)內(nèi)容 指針與函數(shù).
細(xì)節(jié)5:函數(shù)體的內(nèi)容.此內(nèi)容為小模塊的核心,也是體驗(yàn)每個(gè)人思路的一部分.我們先只看一下其中的返回值部分.return語句會結(jié)束一切函數(shù)包括"小模塊"的運(yùn)行,同時(shí)return(表達(dá)式)還可以向主函數(shù)返回"表達(dá)式",表達(dá)式為變量或者常量,例如:
#includefloat avg(int a,int b,int c){ float avg=(a+b+c)/3; return avg;}int main(){ int a,b,c; float average; scanf("%d %d %d",&a,&b,&c); average=avg(a,b,c); printf("平均值為%.1f",average); }
其中"小模塊"的return avg 的avg在小模塊運(yùn)行完后賦給了main函數(shù)的average,結(jié)果如下:
?細(xì)節(jié)6:main使用自己的"小模塊"時(shí),如果"小模塊"在主函數(shù)后面,必須先在前面聲明,就是這樣:
//兩個(gè)數(shù)值交換#include //"#"預(yù)處理指令 void swap(int a,int b);//聲明函數(shù),(定義加;) int main(){ int a,b; a=1,b=2; swap(a,b); printf("實(shí)參a為%d,實(shí)參b為%d/n",a,b); return 0;}void swap(int a,int b){ printf("交換前a為%d,b為%d/n",a,b); int i;//i為數(shù)據(jù)的傳遞橋梁 i=a;//a的值賦給了i a=b;//b的值賦給了a b=i;//i的值賦給了b printf("交換后a為%d,b為%d/n",a,b); }
即"小模塊"必須先聲明,在調(diào)用.
/
以上內(nèi)容為21級大一新生對于函數(shù)的了解,可能哪里有些不妥,請多指教.代碼均為c,都可直接運(yùn)行
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/125650.html
摘要:友情提示先關(guān)注收藏,再查看,萬字保姆級語言從入門到精通教程。及大牛出天地開始有隨之乃有萬種語年英國劍橋大學(xué)推出了語言。 友情提示:先關(guān)注收藏,再查看,13 萬字保...
目錄 一、什么是C語言? 二、第一個(gè)C語言程序 代碼 程序分析 ?程序運(yùn)行 一個(gè)工程中出現(xiàn)兩個(gè)及以上的main函數(shù) 代碼 運(yùn)行結(jié)果 分析 三、數(shù)據(jù)類型 數(shù)據(jù)各種類型 為什么會有這么多的數(shù)據(jù)類型? 計(jì)算機(jī)單位 ?各個(gè)數(shù)據(jù)類型的大小 ?注意事項(xiàng) 數(shù)據(jù)類型的使用 四、變量和常量 變量的分類 變量的使用 變量的作用域和生命周期 ?常量 五、字符串+轉(zhuǎn)義字符+注釋 字符串 ?轉(zhuǎn)義字符 注釋 六、選擇語句 ?...
摘要:我們來介紹語言和中的區(qū)別和聯(lián)系。語言沒有函數(shù)重載,支持函數(shù)重載。語言中產(chǎn)生函數(shù)符號的規(guī)則是根據(jù)名稱產(chǎn)生,這也就注定了語言不存在函數(shù)重載的概念。簡單來說,它和普通變量的區(qū)別只是不能做左值而已。需要注意的是,的指針有可能退化成語言的指針。 C語言雖說經(jīng)常和C++在一起被大家提起,但可千萬不要以為...
摘要:大家好,今天屁孩君給大家?guī)砣腴T綜合。年,標(biāo)準(zhǔn)委員會發(fā)布了語言的第一個(gè)國際標(biāo)準(zhǔn),該標(biāo)準(zhǔn)即為大名鼎鼎的。年,標(biāo)準(zhǔn)委員會發(fā)布了一份技術(shù)報(bào)告,詳細(xì)說明了計(jì)劃引入的新特性。年月日,經(jīng)過標(biāo)準(zhǔn)委員投票,標(biāo)準(zhǔn)獲得一致通過。 ...
摘要:局部變量的作用域是變量所在的局部范圍。局部變量的生命周期是進(jìn)入作用域生命周期開始,出作用域生命周期結(jié)束。 目錄 1、什么是c語言? 2、數(shù)據(jù)類型 3、變量、常量 3.1 定義變量的方法 3.2 變量的分類 3.3 變量的作用域和生命周期 3.4定義常量的方法 4、關(guān)鍵字 1、什么是c語言?...
閱讀 3805·2023-01-11 11:02
閱讀 4308·2023-01-11 11:02
閱讀 3132·2023-01-11 11:02
閱讀 5240·2023-01-11 11:02
閱讀 4804·2023-01-11 11:02
閱讀 5578·2023-01-11 11:02
閱讀 5384·2023-01-11 11:02
閱讀 4084·2023-01-11 11:02