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

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

做電影解析網(wǎng)站網(wǎng)站推廣100種方法

做電影解析網(wǎng)站,網(wǎng)站推廣100種方法,新疆克拉瑪依區(qū)建設(shè)局網(wǎng)站,如何創(chuàng)建一個(gè)企業(yè)網(wǎng)站? ? ? ? ? づ?ど 🎉 歡迎點(diǎn)贊支持🎉 文章目錄 前言 一、return語句 二、數(shù)組做函數(shù)參數(shù) 三、嵌套調(diào)用和鏈?zhǔn)皆L問 3.1 嵌套調(diào)用 3.2 鏈?zhǔn)皆L問 四、函數(shù)聲明和定義 4.1 單個(gè)文件 4.2 多個(gè)文件 總結(jié) 前言 大家好啊,繼我們上一…

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

?

?🎉?點(diǎn)🎉

文章目錄

前言

一、return語句

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

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

3.1 嵌套調(diào)用

3.2 鏈?zhǔn)皆L問

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

4.1 單個(gè)文件

4.2 多個(gè)文件

總結(jié)


前言

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


一、return語句

我們在使用函數(shù)的過程中,總是使用到return語句,例如

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

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

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

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

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

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

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

我來一條一條的為大家解釋。

首先是第一條,我們可以從上節(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á)式是先通過計(jì)算出結(jié)果后才返回最終的值的,這很好理解,就不多贅述。

其次是第2條也很好理解,函數(shù)本身是不需要任何的返回類型的,那return后面肯定什么也不能加的,可能會有人疑問那這個(gè)return加在這個(gè)函數(shù)里面有什么用,當(dāng)然是有用的這個(gè)就可以和第4點(diǎn)結(jié)合起來,它可以直接中斷函數(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;
}

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

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

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

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

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;
}

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

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

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

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

我們在使用函數(shù)的過程之中,難免會使用到數(shù)組做參數(shù),就比如說我們?nèi)绻雽懸粋€(gè)函數(shù),讓它把數(shù)組里的數(shù)據(jù)都變成0,那就得把數(shù)組傳參到函數(shù)中,那我們接下來了解了解數(shù)組如何傳參吧。

我們可以先來寫兩個(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;
}

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

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

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í)還有其他的辦法會更實(shí)用一點(diǎn)。當(dāng)然,數(shù)組這里還有幾個(gè)重要的知識點(diǎn)得掌握。

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

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

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

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

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

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

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

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

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

同上面同理。

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

3.1 嵌套調(diào)用

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

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

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

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

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開始的,所以說我們可以空一位,讓下標(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); // 用來求某年某月有多少天的函數(shù)printf("%d", day);return 0;
}

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

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

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

3.2 鏈?zhǔn)皆L問

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

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

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

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

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

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

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

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

4.1 單個(gè)文件

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

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ù)寫在主函數(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)行代碼會發(fā)現(xiàn)程序報(bào)錯(cuò)了。

上面顯示說是Add未定義,原因是因?yàn)榫幾g器在從上往下編譯時(shí)發(fā)現(xiàn)主程序中有Add這個(gè)函數(shù),但是它在前面沒有看見過,所以就顯示未定義,這個(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ù)是都不會在一個(gè)文件中創(chuàng)建,一般會分為兩個(gè)文件

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

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

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

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

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

聲明:

定義:

使用:

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


總結(jié)

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

http://aloenet.com.cn/news/32983.html

相關(guān)文章:

  • 程序員用來做筆記的網(wǎng)站搜索引擎是指什么
  • 前端網(wǎng)站搜索導(dǎo)航怎么做網(wǎng)站搜索引擎優(yōu)化診斷
  • 淮南市建設(shè)工程質(zhì)量監(jiān)督中心網(wǎng)站百度健康
  • 手機(jī)網(wǎng)站端域名怎樣做解析網(wǎng)絡(luò)營銷就是
  • 黔西南州建設(shè)局網(wǎng)站系統(tǒng)優(yōu)化的方法
  • html個(gè)人主頁制作seo運(yùn)營學(xué)校
  • 做網(wǎng)站對商家的好處b2b平臺有哪些平臺
  • 怎么做網(wǎng)站設(shè)計(jì)推廣引流渠道
  • 哪家公司制作網(wǎng)站互聯(lián)網(wǎng)廣告投放代理公司
  • 網(wǎng)站可以做哪些廣告怎樣搭建自己的網(wǎng)站
  • 最好的網(wǎng)頁設(shè)計(jì)網(wǎng)站源碼交易網(wǎng)站源碼
  • 響應(yīng)網(wǎng)站 整屏seo學(xué)院
  • 開一個(gè)網(wǎng)站需要什么seo排名賺下載
  • 網(wǎng)站備案 深圳廣告投放的方式有哪些
  • 網(wǎng)站建設(shè) 個(gè)人杭州明開seo
  • ovz的vps怎么做網(wǎng)站建設(shè)企業(yè)網(wǎng)站多少錢
  • wordpress如何添加菜單和數(shù)據(jù)表搜索引擎優(yōu)化的目的是對用戶友好
  • 建設(shè)公司企業(yè)簡介北京推廣優(yōu)化公司
  • 裝修網(wǎng)站合作百度官方網(wǎng)站入口
  • 司機(jī)找事做那個(gè)網(wǎng)站靠譜北京網(wǎng)站制作推廣
  • 潛江資訊網(wǎng)免費(fèi)發(fā)布信息手機(jī)端seo
  • 最簡單做網(wǎng)站國際熱點(diǎn)事件
  • 做澳洲ets上什么網(wǎng)站網(wǎng)站seo如何優(yōu)化
  • 寧波市住房和城鄉(xiāng)建設(shè)委員網(wǎng)站網(wǎng)絡(luò)銷售培訓(xùn)
  • 福田企業(yè)網(wǎng)站優(yōu)化哪個(gè)好推廣軟文范例100字
  • 玉溪做網(wǎng)站公司重慶網(wǎng)站搜索引擎seo
  • WordPress 站點(diǎn)圖標(biāo)鏈接站長素材網(wǎng)站
  • 營銷型企業(yè)網(wǎng)站分析與診斷關(guān)鍵詞挖掘站長工具
  • 微信公眾號免費(fèi)模板網(wǎng)站化妝品推廣軟文
  • 有什么知名網(wǎng)站是用織夢做的微信營銷模式