c語言返回主函數
㈠ c璇璦濡備綍瀹氫箟涓涓鍑芥暟鍙浠ヨ繑鍥炲氫釜鍊煎洖鍘葷粰涓誨嚱鏁板憖銆
鍑芥暟鐨榪斿洖鍊欏跺氭槸涓涓鏁幫紝閫氳繃鍑芥暟鐩存帴榪斿洖鐨勮繖涓鏁板彧鏈夊湪鏄鎸囬拡鏃舵墠鑳界粰鍑哄氫釜鏁版嵁緇撴灉銆
鍙浠ヨ冭檻浠ヤ笅鍑犱釜鏂規硶錛
榪斿洖鎸囬拡錛
int*display() {int *p;p=malloc(sizeof(int)*6); ... return p;} //鐢╬[0]~p[5]璁$畻鍚勪綅
void main() {int*p; p=display(); ... free(p);}
浣跨敤鍏ㄥ矓鍙橀噺錛氬皢shiwa,wa,qiao,,shi,ge瀹氫箟鎴愬叏灞鍙橀噺錛岀劧鍚庡瓙紼嬪簭鍜屼富紼嬪簭鐩存帴鐢
浣跨敤鍑芥暟鍙傛暟錛
void display(int* shiwa,int* wa,int* qiao,int* ,int* shi,int ge)
鍑芥暟涓鐢ㄧ被浼艱繖鏍風殑鐢ㄦ硶璁$畻錛(*ge)=Data%10;
void main() {int shiwa,wa,qiao,,shi,ge; display(&shiwa,&wa,&qiao,&,&shi,&ge)}
鐢ㄤ竴涓瓚沖熼暱鐨勬暟榪斿洖錛
long display() {long n;... n=shiwa; n*=10; n+=wa; n*=10; n+=qiao; n*=10; n+=; n*=10; n+=shi; n*=10; n+=ge; return n;}
void main() {int wa; long n; n=display(); wa=n/10000; wa%=10;}
㈡ c語言 讓函數返回到上一級 和 直接返回到主函數 分別應該用什麼語句
函數返回上一級使用return語句就行了。
c標准庫里有一套函數:setjmp/longjmp ,程序員可以在任意位置調用setjmp保存現場,然後在任意另外位置調用longjmp跳到那個保存的現場。這樣就可以滿足直接調回主函數的需求,但這套函數保存現場並不充分,而且打破正常流程式控制制,很不穩定,一般來所不推薦使用。
㈢ C語言調用完void函數後如何將值返回主函數實現輸出的呢 void函數沒有返回值。。。是數組不同
1、C語言調用完void函數後如何將值返回主函數實現輸出的呢?
答:因為 void函數沒有返回值,要想把讓函數的值帶回主函數,還有兩種辦法,第一是使用指針做參數,第二是瀠模滑卜數組做參數。
2、用指針傳遞就可讓跡以了嗎,那如果不用指針呢?
答:用指針當然可以啦。如果不用指針,那就選擇用旦穗數組參數了。
㈣ c語言怎麼從子函數的子函數直接返回主函數
C++可以通過異常處理的throw和catch來實現從子函數的子函數直接返回主函數,匯編語言可以用jmp指令跳轉實現這個需求。
C語言主要靠函數調用和return在函數之間切換,很難做到在多層調用中直接返回主函數。雖然goto語句可以無條件跳轉,但是必須在同一個函數中使用。
因此解決的方法也是用一個特殊的值作為需要返回的標志,然後在兩層調用函數中都遇到該值就返回,但是這個方法也有兩個前提:
1)你的兩個子函數都是由返回值的函數
2)你選擇的特殊值和函數正常的返回的取值不會沖突,不會引起二義性。
因此建議你的這個問題還是用C++ 的異常去解決比較好。
㈤ C璇璦涓濡備綍灝嗘煇鍑芥暟鐨勬墽琛岀粨鏋滆繑鍥炰笂灞傚嚱鏁幫紵濡備綍鍚屾椂榪斿洖澶氫釜鍊礆紵
鐢╮eturn 榪斿洖緇撴灉鍒拌皟鐢ㄦ湰鍑芥暟鐨勫湴鏂.
鍙浠ヨ繑鍥炰竴涓鎸囧悜緇撴瀯浣撶殑鎸囬拡, 杈懼埌榪斿洖澶氫釜鍊肩殑鐩鐨. 榪欑嶆柟寮忎笉澶瀹夊叏, 鎴栬呭畾涔夊叏灞鍙橀噺,鐩存帴鍦ㄥ瓙鍑芥暟涓鏀瑰彉鍏跺, 鎴栬呭畼鏂瑰父鐢ㄧ殑涓縐嶆柟寮忓備笅:
#include<stdio.h>
#include<stdlib.h>
structPOINT
{
intx;
inty;
};
voidfun(structPOINT*p)
{
p->x=5;
p->y=8;
}
intmain()
{
structPOINTpt;
fun(&pt);//瀹氫箟涓涓緇撴瀯浣撳彉閲忎紶鍏ュ嚱鏁扮敤鏉ユ帴鏀剁粨鏋,鐩稿綋浜庤繑鍥炲氫釜鍊
printf("pt.x=%dpt.y=%d",pt.x,pt.y);
return0;
}