c語言怎麼從子函式的子函式直接返回主函式

2021-12-18 23:00:12 字數 1402 閱讀 4301

1樓:樊琦戈華翰

c++可以通過異常處理的throw和catch來實現從子函式的子函式直接返回主函式,組合語言可以用jmp指令跳轉實現這個需求。

c語言主要靠函式呼叫和return在函式之間切換,很難做到在多層呼叫中直接返回主函式。雖然goto語句可以無條件跳轉

2樓:

是要跳出這兩個函式還是把值傳回去函式繼續。

如果跳出兩個函式裡都return;就行,需要把值傳到main裡執行main再繼續的話,應該把main函式裡用到的**構造成一個函式,然後可以直接傳值、構造個全域性變數或指標都行。

3樓:

goto可以做這個事情,建議不要用。你可以讓子函式執行結束,結束之後自然會回到主函式中

4樓:匿名使用者

1 彙編清空子函式分配的儲存空間,這個不在c範圍內了。也可以無視。

2 彙編跳轉到主函式地址 ,彙編級的除錯跳轉過,**的話很複雜。不考慮安全、儲存空間等問題並且最後退出是直接退出而非按步返回,直接呼叫主函式即可。

函式跳轉是編譯器的事,你想按自己的方式跳轉就要做相應的本該由編譯器做的事 。否則不可以。

c語言如何在子函式中通過switch選擇返回主函式

5樓:匿名使用者

while(button==1)

這個地方,避免出現死迴圈,非常重要。

case 1,case 2都會去呼叫別的函式,有可能會結束但是,case 0或者default的時候,執行break,僅僅是跳出了switch,並沒有跳出while

因此,這裡要修改修改

c語言main函式呼叫子函式後,怎麼獲取子函式的返回值/陣列 ?

6樓:龍緣之戀

獲取子函式的返回值/陣列如下:

一、如果只有一個值要返回,那麼用返回值

char * ptr。

int size = 1024。

ptr = subfunc()。

int a=fun()。

int fun()。

fun(int a, int size)。

if (null != (ptr_cmp = malloc(size+1))。

memcpy(ptr_cmp, array_tmp, size)。

二、陣列是用迴圈達到依次賦值的目的

char * subfunc()。

*ptr_cmp = '\0'。

return ptr_cmp。

char * subfunc()。

char * ptr_tmp。

int  array_tmp[1024] = {}。

void fun(int *a)。

C語言子函式呼叫糾錯,C語言子函式呼叫糾錯

第一 要保證可以最終退出。就是說,這樣的呼叫最終可以回來。第二 避免迴圈呼叫。就是說當a呼叫b,然後b又呼叫a這種情況,一定要有可以跳出的情況,讓某個a或者b在一定條件下不再呼叫對方就可以返回。第三 避免呼叫深度過深。就是說不能一直呼叫下去。這個具體能夠呼叫多少次根據你的硬體 等具體情況確定的。一般...

用c寫迴圈的四則運算程式並且包含子函式

include include include int add int num1,int num2 加法int subtraction int num1,int num2 減法 int mul int num1,int num2 乘法float divis int num1,int num2 除法i...

c語言計算冪函式怎麼算,C語言計算冪函式怎麼算

include int main void printf y d y return 0 或 include include int main void for z 1 z x z y pow x,x 你是這樣意思嗎?include include math.h void main 沒看懂,你想計算x...