国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

做電影解析網(wǎng)站獨(dú)立站谷歌seo

做電影解析網(wǎng)站,獨(dú)立站谷歌seo,洛陽(yáng)網(wǎng)站改版,蘭州最新情況? ? ? ? ? づ?ど 🎉 歡迎點(diǎn)贊支持🎉 文章目錄 前言 一、return語(yǔ)句 二、數(shù)組做函數(shù)參數(shù) 三、嵌套調(diào)用和鏈?zhǔn)皆L問(wèn) 3.1 嵌套調(diào)用 3.2 鏈?zhǔn)皆L問(wèn) 四、函數(shù)聲明和定義 4.1 單個(gè)文件 4.2 多個(gè)文件 總結(jié) 前言 大家好啊,繼我們上一…

? ? ? ? ? ? ?? ? ? ? ?? ? ? ? ? ? ?

?

?🎉?點(diǎn)🎉

文章目錄

前言

一、return語(yǔ)句

二、數(shù)組做函數(shù)參數(shù)

三、嵌套調(diào)用和鏈?zhǔn)皆L問(wèn)

3.1 嵌套調(diào)用

3.2 鏈?zhǔn)皆L問(wèn)

四、函數(shù)聲明和定義

4.1 單個(gè)文件

4.2 多個(gè)文件

總結(jié)


前言

大家好啊,繼我們上一次講的函數(shù)(1)已經(jīng)過(guò)了兩周了,不知道大家掌握的怎么樣,由于要期末考試,我斷更了兩周,希望大家見(jiàn)諒,那么我們接著上一章節(jié)來(lái)繼續(xù)說(shuō)說(shuō)函數(shù)的內(nèi)容吧。我們這一章節(jié)就來(lái)看看return語(yǔ)句和數(shù)組傳參及嵌套調(diào)用和鏈?zhǔn)皆L問(wèn)等問(wèn)題,接下來(lái)我們來(lái)一起學(xué)習(xí)本次的內(nèi)容。


一、return語(yǔ)句

我們?cè)谑褂煤瘮?shù)的過(guò)程中,總是使用到return語(yǔ)句,例如

int Add(int a, int b)
{int c = a + b;return c;
}

既然return這么重要,那它到底怎么使用呢,我們來(lái)了解了解。

1. return后面可以是一個(gè)數(shù)值,也可以是一個(gè)表達(dá)式,但是如果return后面是表達(dá)式的話要先計(jì)算表達(dá)式的內(nèi)容,在返回結(jié)果。

2. return后面可以什么都沒(méi)有,直接寫(xiě)return,這種寫(xiě)法適合函數(shù)返回類(lèi)型是void(無(wú)類(lèi)型返回)的情況

3. return返回的值和函數(shù)返回的類(lèi)型不一致,系統(tǒng)會(huì)自動(dòng)返回的值轉(zhuǎn)換成函數(shù)返回的類(lèi)型。

4. return執(zhí)行后,函數(shù)就徹底返回,后面的代碼不執(zhí)行。

5. 如果函數(shù)中出現(xiàn)了if分支,要確保每個(gè)分支都有返回的情況,不然程序會(huì)報(bào)錯(cuò)。

我來(lái)一條一條的為大家解釋。

首先是第一條,我們可以從上節(jié)課的代碼就能知道,return可以直接返回?cái)?shù)值,也可以返回一個(gè)表達(dá)式。

int Add(int a, int b)
{int c = a + b;return c;
}
int Add(int a, int b)
{return a + b;
}

表達(dá)式是先通過(guò)計(jì)算出結(jié)果后才返回最終的值的,這很好理解,就不多贅述。

其次是第2條也很好理解,函數(shù)本身是不需要任何的返回類(lèi)型的,那return后面肯定什么也不能加的,可能會(huì)有人疑問(wèn)那這個(gè)return加在這個(gè)函數(shù)里面有什么用,當(dāng)然是有用的這個(gè)就可以和第4點(diǎn)結(jié)合起來(lái),它可以直接中斷函數(shù)而不繼續(xù)運(yùn)行下面的代碼。這就是這個(gè)return的作用。

void Print(int n)
{if (n <= 0){return;}for (int i = 1; i <= n; i++){printf("%d ", i);}
}int main()
{int n = 0;scanf("%d", &n);Print(n);return 0;
}

我們可以來(lái)看這個(gè)代碼,這個(gè)代碼的目的是如果n>0就把1~n的數(shù)字打印出來(lái),我們可以來(lái)看這個(gè)打印的函數(shù)Print就可以看到,如果n<=0就return,我們可以來(lái)看看這個(gè)return后還會(huì)不會(huì)繼續(xù)運(yùn)行函數(shù)下面的代碼了。

可以看到,我輸入一個(gè)正數(shù)它很好的打印出來(lái)了,那我輸入一個(gè)負(fù)數(shù)或者0會(huì)怎么樣呢?

很顯然,它什么都沒(méi)有輸出,這就是return的強(qiáng)大,它比break都強(qiáng),break是跳出循環(huán),而return是直接跳出函數(shù)。

我們現(xiàn)在來(lái)看看第3點(diǎn),其實(shí)也很好理解,就是如果return返回的類(lèi)型和函數(shù)要求的返回類(lèi)型不一樣是會(huì)轉(zhuǎn)換成函數(shù)類(lèi)型。

char test(char a)
{int b = a;return b;
}int main()
{char a;scanf("%c", &a);int b = sizeof(test(a));printf("%d", b);return 0;
}

我們可以來(lái)看看這個(gè)代碼,我們先輸入一個(gè)字符,然后寫(xiě)一個(gè)函數(shù),這個(gè)函數(shù)的返回類(lèi)型是字符型,但是我卻返回了一個(gè)整型,那我們來(lái)看看它到底返回的是字符還是整型吧,我們可以知道字符的sizeof是1,而整型是大于等于2。

可以看到是1,所以返回回來(lái)的是字符型。也就是函數(shù)要求的返回類(lèi)型。

最后我們來(lái)看看第5點(diǎn),其實(shí)也很簡(jiǎn)單,你想想,如果一個(gè)要求要返回內(nèi)容的函數(shù)卻沒(méi)有返回內(nèi)容會(huì)怎么辦,肯定會(huì)出現(xiàn)問(wèn)題啊,可能你十分肯定不會(huì)有其他情況發(fā)生,但是萬(wàn)一呢,萬(wàn)一發(fā)生了呢,可能你會(huì)想那再改嘛,但是給了用戶后發(fā)生這種情況導(dǎo)致程序崩潰了,那是多大的損失啊。所以為了防止這種事情的發(fā)生,函數(shù)中如果有if,那必須都有返回值,不然程序會(huì)報(bào)錯(cuò)的。

二、數(shù)組做函數(shù)參數(shù)

我們?cè)谑褂煤瘮?shù)的過(guò)程之中,難免會(huì)使用到數(shù)組做參數(shù),就比如說(shuō)我們?nèi)绻雽?xiě)一個(gè)函數(shù),讓它把數(shù)組里的數(shù)據(jù)都變成0,那就得把數(shù)組傳參到函數(shù)中,那我們接下來(lái)了解了解數(shù)組如何傳參吧。

我們可以先來(lái)寫(xiě)兩個(gè)關(guān)于數(shù)組傳參的函數(shù),第一個(gè)就是把數(shù)組里的數(shù)據(jù)都變成0的函數(shù),第二個(gè)則是打印數(shù)組的函數(shù)。

int main()
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };set_arr();     //把數(shù)組里的數(shù)據(jù)都變成0print_arr();   //打印數(shù)組的函數(shù)return 0;
}

我們可以先來(lái)想想,如果我們要去讓數(shù)組內(nèi)的數(shù)據(jù)都變成0的話,肯定還是要知道數(shù)組里的元素個(gè)數(shù)的,而且我們之前傳實(shí)參的時(shí)候都是在()內(nèi)輸入要傳過(guò)去的東西的名字的,按道理來(lái)講數(shù)組也是這樣的,我們之前說(shuō)過(guò)數(shù)組的名是[ ]前的,也就是arr,所以說(shuō)最后就變成了這樣。

int main()
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int sz = sizeof(arr) / sizeof(arr[0]); //求元素的個(gè)數(shù)set_arr(arr, sz);     //把數(shù)組里的數(shù)據(jù)都變成0print_arr(arr, sz);   //打印數(shù)組的函數(shù)return 0;
}

這就是實(shí)參的寫(xiě)法,實(shí)參傳輸過(guò)去變成形參啦,那形參該怎么寫(xiě)呢?我們參考上一章節(jié)的內(nèi)容就可以知道其實(shí)很簡(jiǎn)單,唯一困難的地方就是不知道數(shù)組該用什么類(lèi)型來(lái)表示。這里我們來(lái)復(fù)習(xí)一下我們前面講數(shù)組是說(shuō)數(shù)組是什么類(lèi)型的啊,除去我們命名的東東其他的就是它的類(lèi)型,比如我們這里的arr它的類(lèi)型是int [ ],那我們的形參是不是 int [ ] arr呢,答案肯定是否定的,其實(shí)沒(méi)有那么復(fù)雜,直接就是數(shù)組啥樣它啥樣就行了,數(shù)組是int arr[ ],那形參也是int arr[ ];當(dāng)然,如果你想換個(gè)名字,比如說(shuō)int brr[ ]也可以。所以說(shuō)最終函數(shù)長(zhǎng)這樣。

void set_arr(int arr[], int sz)
{for (int i = 0; i < sz; i++){arr[i] = 0;}
}void print_arr(int arr[], int sz)
{for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}
}int main()
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int sz = sizeof(arr) / sizeof(arr[0]); //求元素的個(gè)數(shù)set_arr(arr, sz);     //把數(shù)組里的數(shù)據(jù)都變成0print_arr(arr, sz);   //打印數(shù)組的函數(shù)return 0;
}

這就是數(shù)組的傳參方式,當(dāng)然,不知這一種,等我們學(xué)到指針時(shí)還有其他的辦法會(huì)更實(shí)用一點(diǎn)。當(dāng)然,數(shù)組這里還有幾個(gè)重要的知識(shí)點(diǎn)得掌握。

1. 函數(shù)的形式參數(shù)要和函數(shù)的實(shí)際參數(shù)相匹配。

也就是說(shuō)實(shí)參傳了兩個(gè)參數(shù)過(guò)去,那形參就一定要用兩個(gè)參數(shù)接收,不能多也不能少。

2. 函數(shù)的實(shí)參是數(shù)組,形參也是可以寫(xiě)成數(shù)組的形式的。

3. 形參如果是一維數(shù)組,那數(shù)組的大小可以省略不寫(xiě)。

也就和我上面的相同,[ ]中沒(méi)有數(shù)組的大小,當(dāng)然如果寫(xiě)了也無(wú)傷大雅。

4. 形參如果是二維數(shù)組,行可以省略,但是列不行,就和創(chuàng)建二維數(shù)組相同。

5. 數(shù)組傳參,形參是不會(huì)創(chuàng)建新數(shù)組的。

也就是說(shuō)實(shí)參的數(shù)組和形參的數(shù)組是一個(gè)數(shù)組,而不是和上節(jié)課那樣只是數(shù)據(jù)相同,但不是同一個(gè)東西,數(shù)組就是同一個(gè)數(shù)組。

6. 形參操作的數(shù)組和實(shí)參操作的數(shù)組是同一個(gè)數(shù)組。

同上面同理。

三、嵌套調(diào)用和鏈?zhǔn)皆L問(wèn)

3.1 嵌套調(diào)用

嵌套調(diào)用就是函數(shù)之間相互調(diào)用,就像孔明鎖或者魯班鎖,各種不同的結(jié)構(gòu)相互平湊在一起,形成了一個(gè)非常穩(wěn)固的結(jié)構(gòu)。而正是因?yàn)楹瘮?shù)之間有效的相互調(diào)用才形成了相對(duì)的的程序。

假如我們要寫(xiě)一個(gè)程序,要讓它求出某年某月有多少天怎么做呢?我們來(lái)看一下。

int main()
{int years = 0;int month = 0;scanf("%d %d", &years, &month);int day = get_month_day(years, month); // 用來(lái)求某年某月有多少天的函數(shù)printf("%d", day);return 0;
}

這是主函數(shù),我們可以先創(chuàng)建一個(gè)函數(shù)來(lái)解決這個(gè)問(wèn)題,我們來(lái)分析一下這個(gè)問(wèn)題,其實(shí)很簡(jiǎn)單,月份基本上是固定的,唯一一個(gè)不固定的月份就是二月,閏年二月29天,平年二月28天,所以問(wèn)題就變成了一個(gè)找閏年的問(wèn)題,我們可以再創(chuàng)建一個(gè)函數(shù)來(lái)判斷是不是閏年。

int is_leap_year(int y) //是閏年返回1,不是返回0
{if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0){return 1;}else{return 0;}
}
int get_month_day(int y, int m)
{int arr[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//由于arr的下標(biāo)是從0開(kāi)始的,所以說(shuō)我們可以空一位,讓下標(biāo)0變成0if (is_leap_year(y) == 1 && m == 2){return arr[m] + 1;}else{return arr[m];}
}int main()
{int years = 0;int month = 0;scanf("%d %d", &years, &month);int day = get_month_day(years, month); // 用來(lái)求某年某月有多少天的函數(shù)printf("%d", day);return 0;
}

我們可以得到以上的函數(shù),這就能很好的滿足我們的要求,這就是嵌套調(diào)用。

當(dāng)然還可以用switch,大家可以去試一試,這里就不帶大家嘗試了。

大家要注意函數(shù)不能嵌套定義,就是說(shuō)在一個(gè)函數(shù)中在定義一個(gè)函數(shù)是萬(wàn)分不可的。

3.2 鏈?zhǔn)皆L問(wèn)

鏈?zhǔn)皆L問(wèn)就是值把一個(gè)函數(shù)的返回值作為一個(gè)函數(shù)的參數(shù),像鏈條一樣將函數(shù)串起來(lái)就是鏈?zhǔn)皆L問(wèn)。

就比如我們之前玩過(guò)的strlen函數(shù),它的作用是求字符串長(zhǎng)度

int main()
{int a = strlen("ABCDEFG");printf("%d\n", a);return 0;
}

這個(gè)代碼很容易懂,就是求出ABCDEFG的大小后存儲(chǔ)在a中,然后再用printf函數(shù)輸出出來(lái)。

可能有人就在想了,能不能直接把strlen寫(xiě)在printf里面,不用a保存,比如

int main()
{printf("%d\n", strlen("ABCDEFG"));return 0;
}

當(dāng)然可以,這就是一個(gè)鏈?zhǔn)皆L問(wèn),將strlen函數(shù)的返回值放在printf的參數(shù)之中。

四、函數(shù)聲明和定義

4.1 單個(gè)文件

我們?cè)趧?chuàng)建函數(shù)的時(shí)候一般都是把函數(shù)寫(xiě)在主程序的前面,例如

int Add(int a, int b) //函數(shù)的定義
{return a + b;
}int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int c = Add(a, b);//函數(shù)的調(diào)用printf("%d", c);return 0;
}

我們把上面的函數(shù)叫做函數(shù)的定義,而下面引用函數(shù)的地方叫做函數(shù)的調(diào)用。但是我們其實(shí)也可以把函數(shù)寫(xiě)在主函數(shù)的下面。

int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int c = Add(a, b);//函數(shù)的調(diào)用printf("%d", c);return 0;
}int Add(int a, int b) //函數(shù)的定義
{return a + b;
}

這個(gè)時(shí)候我們運(yùn)行代碼會(huì)發(fā)現(xiàn)程序報(bào)錯(cuò)了。

上面顯示說(shuō)是Add未定義,原因是因?yàn)榫幾g器在從上往下編譯時(shí)發(fā)現(xiàn)主程序中有Add這個(gè)函數(shù),但是它在前面沒(méi)有看見(jiàn)過(guò),所以就顯示未定義,這個(gè)時(shí)候我們就可以聲明一下。

int Add(int a, int b);//函數(shù)的聲明int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int c = Add(a, b);//函數(shù)的調(diào)用printf("%d", c);return 0;
}int Add(int a, int b) //函數(shù)的定義
{return a + b;
}

這就是函數(shù)的聲明,這樣程序就能正常運(yùn)行了,當(dāng)然,函數(shù)的定義是特殊的函數(shù)聲明。

4.2 多個(gè)文件

其實(shí)我們一般在創(chuàng)建函數(shù)是都不會(huì)在一個(gè)文件中創(chuàng)建,一般會(huì)分為兩個(gè)文件

.h(頭文件) ---- 函數(shù)的聲明;

.c(源文件) ---- 函數(shù)的定義;

以上就是我們聲明函數(shù)的地方。

以上就是我們函數(shù)定義的地方。

我們?cè)陬^文件中聲明函數(shù),在源文件中定義函數(shù),最后再在我們的主文件中使用函數(shù),這就是多個(gè)文件的函數(shù)聲明和定義。

聲明:

定義:

使用:

在使用時(shí)要注意要引用我們自己創(chuàng)建的頭文件,我們自己的頭文件用" "來(lái)引用。


總結(jié)

以上就是函數(shù)的內(nèi)容啦,希望大家好好吸收和理解下一章節(jié)我來(lái)說(shuō)說(shuō)操作符吧。感謝大家的觀看,如果哪里有誤,歡迎支持,謝謝大家。

http://m.aloenet.com.cn/news/39519.html

相關(guān)文章:

  • 網(wǎng)站建設(shè) 成功案例杭州專(zhuān)業(yè)seo服務(wù)公司
  • 長(zhǎng)春財(cái)經(jīng)學(xué)院怎么樣好不好開(kāi)魯seo服務(wù)
  • 淮南市建設(shè)工程質(zhì)量監(jiān)督中心網(wǎng)站想做網(wǎng)站找什么公司
  • 網(wǎng)站開(kāi)發(fā)簡(jiǎn)歷網(wǎng)站站內(nèi)關(guān)鍵詞優(yōu)化
  • 廈門(mén)誰(shuí)需要網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣公司排行榜
  • java網(wǎng)站開(kāi)發(fā)技術(shù)百度seo優(yōu)化
  • 北京海淀區(qū)信息科技有限公司seo關(guān)鍵詞優(yōu)化技術(shù)
  • 網(wǎng)站工作室設(shè)計(jì)廣州專(zhuān)做優(yōu)化的科技公司
  • 全網(wǎng)平臺(tái)整合營(yíng)銷(xiāo)推廣重慶百度快速優(yōu)化
  • 上海做網(wǎng)站開(kāi)發(fā)的公司有哪些百度軟件商店下載安裝
  • 施工企業(yè)稅款繳納蘇州關(guān)鍵詞優(yōu)化seo
  • 用css做網(wǎng)站的好處百度指數(shù)的主要用戶是
  • 垂直 網(wǎng)站開(kāi)發(fā)長(zhǎng)沙網(wǎng)站定制
  • 泉州市建設(shè)局網(wǎng)站廈門(mén)seo培訓(xùn)
  • wap手機(jī)建站平臺(tái)百度收錄需要多久
  • 網(wǎng)站即時(shí)到賬要怎么做建網(wǎng)站流程
  • 微博seo營(yíng)銷(xiāo)搜索引擎優(yōu)化的簡(jiǎn)稱(chēng)
  • 什么網(wǎng)站做美式軟裝設(shè)計(jì)理念seo排名系統(tǒng)
  • 樂(lè)都區(qū)公司網(wǎng)站建設(shè)網(wǎng)站統(tǒng)計(jì)數(shù)據(jù)
  • 包頭教育平臺(tái)網(wǎng)站建設(shè)qq群推廣平臺(tái)
  • 三門(mén)峽建設(shè)銀行網(wǎng)站緬甸今日新聞
  • 微信微網(wǎng)站開(kāi)發(fā)百度云競(jìng)價(jià)賬戶
  • 上海網(wǎng)站建設(shè)找緣魁北京網(wǎng)站提升排名
  • 個(gè)人怎么做網(wǎng)站推廣競(jìng)價(jià)推廣是什么意思
  • 織夢(mèng)系統(tǒng)網(wǎng)站騰訊競(jìng)價(jià)廣告
  • 人防工程做資料的網(wǎng)站sem托管公司
  • 怎么做跑腿網(wǎng)站如何建網(wǎng)站詳細(xì)步驟
  • 哪個(gè)網(wǎng)站可以做賣(mài)房百度詞條優(yōu)化
  • 福州建設(shè)網(wǎng)站效果seo關(guān)鍵詞優(yōu)化報(bào)價(jià)價(jià)格
  • 網(wǎng)站是怎么做的嗎谷歌網(wǎng)頁(yè)版登錄入口