C語(yǔ)言中return、break、continue用法和區(qū)別
作者 | strongerHuang
微信公眾號(hào) | 嵌入式專(zhuān)欄C語(yǔ)言中 return、 break、continue 是我們常用的三個(gè)“流程控制”關(guān)鍵字。
你能熟練使用這三個(gè)關(guān)鍵字嗎?下面來(lái)講講這三個(gè)關(guān)鍵字,以及相關(guān)的內(nèi)容。
0概述
大部分編程語(yǔ)言中都存在return、 break、continue關(guān)鍵字,它們的作用有相似之處,有“流程控制”的功能。剛開(kāi)始編程的時(shí)候,可能很多人都會(huì)搞混它們的關(guān)系,特別是 break 和 continue 很多人都沒(méi)搞明白。
這三個(gè)關(guān)鍵字的大概意思:return:跳出當(dāng)前正在執(zhí)行函數(shù)。break:在循環(huán)體內(nèi),結(jié)束整個(gè)循環(huán)過(guò)程。continue:結(jié)束本次的循環(huán),直接進(jìn)行下一次的循環(huán)。
1return
return:跳出當(dāng)前正在執(zhí)行函數(shù)。使用方法:return (表達(dá)式);其中,(表達(dá)式)是可以省略的。
1.有返回類(lèi)型return通常都是帶有返回類(lèi)型的,比如返回int型變量:
int Fun(void){ int rtn;
//函數(shù)代碼;
return rtn;}
這里可以返回變量、結(jié)構(gòu)體、指針等。
強(qiáng)調(diào)兩點(diǎn):a.return不能返回?cái)?shù)組.b.return不能返回指向(函數(shù)內(nèi))局部變量的類(lèi)型;
2.無(wú)返回類(lèi)型有些情況下,return是無(wú)返回類(lèi)型的。
比如,當(dāng)某個(gè)條件成立,需要結(jié)束執(zhí)行本函數(shù):
void Fun(void){ int rtn;
//函數(shù)代碼;
if(條件成立) return;
//函數(shù)代碼;}
強(qiáng)調(diào)兩點(diǎn):
a.void 空類(lèi)型因?yàn)楹瘮?shù)的返回類(lèi)型為void(空類(lèi)型),所以,這里 return 是不帶任何值的。(帶有返回?cái)?shù)據(jù),就會(huì)報(bào)錯(cuò))
b.void * 任意類(lèi)型指針
void *Fun(void) 這是一個(gè)“返回任意類(lèi)型指針”的指針函數(shù)(也是一個(gè)函數(shù),只是它返回類(lèi)型是指針)。
2break
break:在循環(huán)體內(nèi),結(jié)束整個(gè)循環(huán)過(guò)程,然后執(zhí)行循環(huán)之后的代碼。
break常用語(yǔ) for、 while 和 switch 語(yǔ)句中。比如:
for(i=0; i<100; i ){ //代碼
if(條件成立) break; //跳出for循環(huán)
//代碼}
switch(num){ case 1: //代碼 break;
case 2: //代碼 break;}
1.break只挑出當(dāng)前循環(huán)
比如:
int a=0;int i=0;int j=0;
for(i=0;i<=9;i ){ for(j=0;j<=9;j ) { break; a ; //這里a 不會(huì)執(zhí)行; }
a ; //這里a 會(huì)執(zhí)行;}printf("%d",a);
2.case如果沒(méi)有 break 會(huì)依順序執(zhí)行
如果 switch 沒(méi)有break,比如:
switch(num){ case 1: //代碼 //沒(méi)有break;
case 2: //代碼 //沒(méi)有break;
case 3: //代碼 //沒(méi)有break;}
相信有很多人都在這里踩過(guò)坑。
3continue
continue:結(jié)束本次的循環(huán),直接進(jìn)行下一次的循環(huán)。和break類(lèi)似,continue也是用于循環(huán)語(yǔ)句中,只是這里剛好和break相反,這里是繼續(xù)執(zhí)行下一次循環(huán)(而不是跳出循環(huán))。
比如:for(i=0; i<100; i ){ //代碼1
if(條件成立) continue; //執(zhí)行下一次循環(huán)
//代碼2}
如果條件成立,則下面 代碼2 不會(huì)被執(zhí)行。
1.continue不用于switch語(yǔ)句中
break用于switch語(yǔ)句中,但continue通常不用于switch語(yǔ)句中。
2.break 和continue 主要區(qū)別
break 語(yǔ)句是結(jié)束整個(gè)循環(huán)過(guò)程,不再判斷執(zhí)行循環(huán)的條件是否成立。
continue 語(yǔ)句則只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)。