摘要:無(wú)論實(shí)參是何種類(lèi)型的量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須有確定的值,以便把這些值傳送給形參。形式參數(shù)當(dāng)函數(shù)調(diào)用完成之后就自動(dòng)銷(xiāo)毀了。函數(shù)的聲明一般出現(xiàn)在函數(shù)的使用之前。函數(shù)的聲明一般要放在頭文件中的。
?我輸入strcpy后
#include#includeint main() { char arr2[] = "zhangdashuai"; char arr1[30]; char arr[40]; strcpy(arr1, arr2); strcpy(arr, "zhangdasa"); printf("%s/n%s", arr1, arr); return 0;}
?如果有小伙伴英文是在看不懂,這邊還有一個(gè)中文版的網(wǎng)站
void declarator
When used as a function return type, the void keyword specifies that the function does not return a value
但是其他的如果函數(shù)返回類(lèi)型是int? float 類(lèi)型的 ,那么在最后就必須加上return 相應(yīng)的類(lèi)型數(shù)字。
eg:這個(gè)menu函數(shù)只是為了打印出我想要的菜單,不需要返回某個(gè)值
void menu () { printf("###################"); printf("####1.play#########"); printf("####0.noplay#######"); printf("###################");}
#includeint Add(int x, int y) { return x + y;}int main() { int a = 8; int b = 9; int c = Add(a, b); printf("%d/n", c); return 0;}
函數(shù)名的話(huà),就是根據(jù)我們想要函數(shù)實(shí)現(xiàn)的功能,大致翻譯成英文即可。
參數(shù),接下來(lái)我通過(guò)一個(gè)代碼例子闡述參數(shù)的概念——
我現(xiàn)在想創(chuàng)造一個(gè)函數(shù),它可以把我穿進(jìn)去的數(shù)字互換一下,,假設(shè)我穿進(jìn)去a=10,b=20,
那么作用使得a=20,b=10;
上代碼
#includevoid swap(int x, int y) { int tam = x; x = y; y = tam;}int main() { int a = 10; int b = 20; printf("a=%d b=%d/n", a, b); swap(a, b); printf("a=%d b=%d/n", a, b); return 0;}
???
函數(shù)好像跟根本沒(méi)起作用,為什么???
我們要養(yǎng)成一個(gè)好習(xí)慣,拒絕伸手黨,去vs調(diào)試一下
?我們可以看到,雖然x,y的值跟a,b相等
但是發(fā)現(xiàn)他們的地址根本不一樣???
為什么?
引入?yún)?shù)的概念
我們的a,b是實(shí)參,x,y是形參,我們通過(guò)形參想改變實(shí)參的關(guān)系,結(jié)果證明我們光傳遞值是不可以的,因?yàn)閭魅雽?shí)參后,形參還會(huì)開(kāi)辟一個(gè)新的空間,我是這樣理解的
void swap(int* x, int* y) { int tam = *x; *x = *y; *y = tam;}#includeint main() { int a = 10; int b = 20; printf("a=%d b=%d/n", a, b); swap(&a, &b); printf("a=%d b=%d/n", a, b); return 0;}
??我們?cè)僬{(diào)試一下
發(fā)現(xiàn)現(xiàn)在x,y的地址和a,b地址相同
這個(gè)時(shí)候我們通過(guò)形參便可以改變實(shí)參的關(guān)系了。
這個(gè)時(shí)候可能會(huì)有疑問(wèn),之前我們的Add加法函數(shù)也是是傳值調(diào)用,為什么還能達(dá)到相同的目的呢?第二個(gè)swap函數(shù)的傳值調(diào)用為什么不行呢?
我是這樣理解的,有return返回值的時(shí)候,傳值調(diào)用和傳值調(diào)用都可以,但是當(dāng)沒(méi)有return返回值,只是執(zhí)行函數(shù)里面的內(nèi)容是,只有在傳址調(diào)用時(shí)才可以。
我們應(yīng)該區(qū)分出傳值調(diào)用和傳址調(diào)用。
總結(jié)
四.?函數(shù)的嵌套調(diào)用和鏈?zhǔn)皆L(fǎng)問(wèn)
函數(shù)的嵌套調(diào)用就是一個(gè)函數(shù)里面可以包含使用另外一個(gè)函數(shù)
eg:
void first() { printf("hhe");}void seond() { printf("hdg"); first();}
注*函數(shù)可以嵌套調(diào)用,但是不能嵌套定義
eg:
void first() { printf("hhe");void first() { printf("hdg"); first();}}
這樣便是錯(cuò)誤的
int Add(int x, int y) { return x + y;}#includeint main() { int a = 10; int b = 20; int c = Add(Add(a, b), b); printf("%d/n", c); return 0;}
五.函數(shù)的聲明和定義
void Printf(int x) { if (x > 9) { Printf(x / 10); } printf("%d ", x % 10);}#includeint main( ){ int m = 0; scanf("%d", &m); Printf(m); return 0;}
?可以觀(guān)察到,為什么呢?????
?因?yàn)閯傞_(kāi)始必須全部完成if語(yǔ)句里面的,完成if后才會(huì)編譯后面的代碼,然后if語(yǔ)句里面全都是Printf函數(shù),所以就一直傳遞,最后不滿(mǎn)足條件是才會(huì)退出來(lái),然后開(kāi)始返回,也就是歸。
觀(guān)察我上面的代碼可以發(fā)現(xiàn),遞歸有限制條件,不妨花點(diǎn)時(shí)間思考一下?
如果這兩個(gè)條件有一個(gè)不滿(mǎn)足,會(huì)發(fā)生什么呢??——棧溢出
這個(gè)名詞也許你不太熟悉,
?這是電腦中粗存空間的區(qū)域名稱(chēng),而我們?cè)谶f歸中每調(diào)用一次函數(shù),便會(huì)在棧區(qū)開(kāi)辟一塊空間,如果允許計(jì)算機(jī)一直開(kāi)辟空間的話(huà),那么區(qū)域便會(huì)裝不下,這樣的話(huà)學(xué)術(shù)人員便為這個(gè)取了一個(gè)名字——棧溢出。
我們?cè)囋嚄R绯龅那闆r
void Printf(int x) { Printf(x / 10); }#includeint main( ){ int m = 20; Printf(m); return 0;}
?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/123193.html
摘要:年月日,研究人員通過(guò)郵件列表披露了容器逃逸漏洞的詳情,根據(jù)的規(guī)定會(huì)在天后也就是年月日公開(kāi)。在號(hào)當(dāng)天已通過(guò)公眾號(hào)文章詳細(xì)分析了漏洞詳情和用戶(hù)的應(yīng)對(duì)之策。 美國(guó)時(shí)間2019年2月11日晚,runc通過(guò)oss-security郵件列表披露了runc容器逃逸漏洞CVE-2019-5736的詳情。runc是Docker、CRI-O、Containerd、Kubernetes等底層的容器運(yùn)行時(shí),此...
摘要:因?yàn)橛脩?hù)不用在第一次進(jìn)入應(yīng)用時(shí)下載所有代碼,用戶(hù)能更快的看到頁(yè)面并與之交互。譯高階函數(shù)利用和來(lái)編寫(xiě)更易維護(hù)的代碼高階函數(shù)可以幫助你增強(qiáng)你的,讓你的代碼更具有聲明性。知道什么時(shí)候和怎樣使用高階函數(shù)是至關(guān)重要的。 Vue 折騰記 - (10) 給axios做個(gè)挺靠譜的封裝(報(bào)錯(cuò),鑒權(quán),跳轉(zhuǎn),攔截,提示) 稍微改改都能直接拿來(lái)用~~~喲吼吼,喲吼吼..... 如何無(wú)痛降低 if else 面...
摘要:大家好,我是冰河有句話(huà)叫做投資啥都不如投資自己的回報(bào)率高。馬上就十一國(guó)慶假期了,給小伙伴們分享下,從小白程序員到大廠(chǎng)高級(jí)技術(shù)專(zhuān)家我看過(guò)哪些技術(shù)類(lèi)書(shū)籍。 大家好,我是...
閱讀 3481·2021-11-12 10:36
閱讀 2829·2021-11-11 16:55
閱讀 3053·2021-09-27 13:36
閱讀 1679·2021-08-05 10:01
閱讀 3634·2019-08-30 15:55
閱讀 845·2019-08-30 13:01
閱讀 1965·2019-08-29 17:16
閱讀 2431·2019-08-29 16:40