要知道 C語(yǔ)言是由MAIN函數(shù)開(kāi)始也由它結(jié)束。
創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)臨澧,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108
每調(diào)用一次分函數(shù),只要運(yùn)行完畢后就會(huì)回到調(diào)用分函數(shù)的地方繼續(xù)往后執(zhí)行。
C語(yǔ)言主要靠函數(shù)調(diào)用和return在函數(shù)之間切換,很難做到在多層調(diào)用中直接返回主函數(shù)。雖然goto語(yǔ)句可以無(wú)條件跳轉(zhuǎn),但是必須在同一個(gè)函數(shù)中使用。
因此解決的方法也是用一個(gè)特殊的值作為需要返回的標(biāo)志,然后在兩層調(diào)用函數(shù)中都遇到該值就返回,但是這個(gè)方法也有兩個(gè)前提:
1)你的兩個(gè)子函數(shù)都是由返回值的函數(shù)
2)你選擇的特殊值和函數(shù)正常的返回的取值不會(huì)沖突,不會(huì)引起二義性。
同樣的操作,C++可以通過(guò)異常處理的throw和catch來(lái)實(shí)現(xiàn)從子函數(shù)的子函數(shù)直接返回主函數(shù),匯編語(yǔ)言可以用jmp指令跳轉(zhuǎn)實(shí)現(xiàn)這個(gè)需求。因此建議你的這個(gè)問(wèn)題還是用C++ 的異常去解決比較好。
如果是用純C語(yǔ)言來(lái)寫,把所有函數(shù)聲明放在最前面,然后函數(shù)定義好,這樣的函數(shù)是公有的,可以隨意調(diào)用。然后主函數(shù)不能少,這樣子的話,所有函數(shù)包括主函數(shù)的前后順序可隨意。
void fun1();
void fun2();
//...
int main()
{
return 0;
}
void fun1()
{
//code...
}
void fun2()
{
//code...
}
//...
一個(gè)函數(shù)只能有一個(gè)返回值,指針可以返回多個(gè),例如:
void aaa()
{
int *a,*c;
int a,c;
*a=a;*c=c;
a=b();c=b();
}
下面調(diào)用 *a和*c.
擴(kuò)展資料:
在C語(yǔ)言中,指針的使用非常廣泛,因?yàn)槭褂弥羔樛梢陨筛咝?、更緊湊的代碼??偟膩?lái)說(shuō),使用指針有如下好處:
1、指針的使用使得不同區(qū)域的代碼可以輕易的共享內(nèi)存數(shù)據(jù),這樣可以使程序更為快速高效;
2、C語(yǔ)言中一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)往往需要使用指針來(lái)構(gòu)建,如鏈表、二叉樹等;
3、C語(yǔ)言是傳值調(diào)用,而有些操作傳值調(diào)用是無(wú)法完成的,如通過(guò)被調(diào)函數(shù)修改調(diào)用函數(shù)的對(duì)象,但是這種操作可以由指針來(lái)完成,而且并不違背傳值調(diào)用。
參考資料來(lái)源:百度百科-指針 (編程語(yǔ)言中的一個(gè)對(duì)象)