重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
C++可以通過異常處理的throw和catch來實(shí)現(xiàn)從子函數(shù)的子函數(shù)直接返回主函數(shù),匯編語言可以用jmp指令跳轉(zhuǎn)實(shí)現(xiàn)這個(gè)需求。
蓬安網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
C語言主要靠函數(shù)調(diào)用和return在函數(shù)之間切換,很難做到在多層調(diào)用中直接返回主函數(shù)。雖然goto語句可以無條件跳轉(zhuǎn),但是必須在同一個(gè)函數(shù)中使用。
因此解決的方法也是用一個(gè)特殊的值作為需要返回的標(biāo)志,然后在兩層調(diào)用函數(shù)中都遇到該值就返回,但是這個(gè)方法也有兩個(gè)前提:
1)你的兩個(gè)子函數(shù)都是由返回值的函數(shù)
2)你選擇的特殊值和函數(shù)正常的返回的取值不會(huì)沖突,不會(huì)引起二義性。
因此建議你的這個(gè)問題還是用C++ 的異常去解決比較好。
#includestdio.h
int main()
{
int f(); //子函數(shù)的聲明
int a=f(); //得到子函數(shù)計(jì)算的結(jié)果(就是調(diào)用子函數(shù))
printf("%d",a); //輸出a的值
}
int f() //子函數(shù)的實(shí)現(xiàn)
{
int a; //聲明整形變量a
a=1+1; //計(jì)算得到a的值
return a; //返回a的值(若不返回,在主函數(shù)中不能得到這個(gè)值)
}
其中這里有個(gè)誤區(qū),就是在子函數(shù)和主函數(shù)中 變量用了一個(gè)字母,很容易誤導(dǎo)新人以為那是一個(gè)變量,其實(shí)不然,子函數(shù)中的a在函數(shù)調(diào)用結(jié)束就已經(jīng)不在了,主函數(shù)中的a又是另外一個(gè)變量。也可以不定義成一樣的字母,容易區(qū)分一點(diǎn)。
定義三個(gè)變量。#includestdio.h
int main(void)
{
int a=3;
int b=5;
int c=0;
c=a;
a=b;
b=c;
printf("a=%d,b=%d",a,b);
getchar();
return 0;}
可以直接傳入數(shù)組名
main(){
int?a[5]?=?.....;
func1(a);
func2(a);
}
void?func1(int?a[5]){
}
void?func2(int?*a){
}
把那5個(gè)函數(shù)加個(gè)參數(shù),如void output(int a[], int n);
把n定義為全局變量
主函數(shù)里定義
int
a[100];
子函數(shù)定義
void
fun(int
in[]);
調(diào)用子函數(shù)
fun(a);