調(diào)用子函數(shù)c語言 子函數(shù)調(diào)用子函數(shù)

C語言中一個子函數(shù)怎么調(diào)用另一個子函數(shù)的運算?

方法很多。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了青銅峽免費建站歡迎大家使用!

主要是要將不同類型傳遞給fun2處理。

最簡單float類型最大,fun2的參數(shù)類型就定義為float,然后運算結(jié)果返回float類型。在main函數(shù)用a3,b3,c3接收的時候強轉(zhuǎn)型。

另一種方法,把變量都轉(zhuǎn)換成一種類型傳遞。這里用union共用體類型就比較適合。還方便擴展,如果想添加其他類型還可以在union里添加。

我這里代碼就用第二種方法寫。

#include stdio.h

typedef union data{

char c;

int i;

float f;

}DA;

void fun1(void);

DA fun2(DA n1,DA n2,int nType);//nType=1:char類型。nType=2:int類型。nType=3:float類型。

int main()

{

fun1();

return 0;

}

void fun1(void)

{

char a1=1,a2=2;

int b1=100,b2=300;

float c1=5.1,c2=6.8;

DA n1,n2;

n1.c=a1,n2.c=a2;

char a3=fun2(n1,n2,1).c;

n1.i=b1,n2.i=b2;

int b3=fun2(n1,n2,2).i;

n1.f=c1,n2.f=c2;

float c3=fun2(n1,n2,3).f;

printf("a3=%c\nb3=%d\nc3=%.2f\n",a3,b3,c3);

}

DA fun2(DA n1,DA n2,int nType)//nType=1:char類型。nType=2:int類型。nType=3:float類型。

{

DA n3;

switch(nType)

{

? case 1:n3.c=n1.c+n2.c;break;

? case 2:n3.i=n1.i+n2.i;break;

? case 3:n3.f=n1.f+n2.f;break;

}

return n3;

}

C語言中如何調(diào)用一個函數(shù)的子函數(shù)?

要知道 C語言是由MAIN函數(shù)開始也由它結(jié)束。

每調(diào)用一次分函數(shù),只要運行完畢后就會回到調(diào)用分函數(shù)的地方繼續(xù)往后執(zhí)行。

C語言主要靠函數(shù)調(diào)用和return在函數(shù)之間切換,很難做到在多層調(diào)用中直接返回主函數(shù)。雖然goto語句可以無條件跳轉(zhuǎn),但是必須在同一個函數(shù)中使用。

因此解決的方法也是用一個特殊的值作為需要返回的標(biāo)志,然后在兩層調(diào)用函數(shù)中都遇到該值就返回,但是這個方法也有兩個前提:

1)你的兩個子函數(shù)都是由返回值的函數(shù)

2)你選擇的特殊值和函數(shù)正常的返回的取值不會沖突,不會引起二義性。

同樣的操作,C++可以通過異常處理的throw和catch來實現(xiàn)從子函數(shù)的子函數(shù)直接返回主函數(shù),匯編語言可以用jmp指令跳轉(zhuǎn)實現(xiàn)這個需求。因此建議你的這個問題還是用C++ 的異常去解決比較好。

C語言里子函數(shù)可以調(diào)用子函數(shù)嗎?

可以的。

C語言規(guī)定,任意函數(shù)均可以嵌套調(diào)用。所以子函數(shù)可以調(diào)用其它子函數(shù),也可以調(diào)用自身。

int?func(int?a)

{

if(a?==?0)?return?0;

return?func(a-1)+a;

}

這樣調(diào)用自身的稱為遞歸調(diào)用。

又如:

int?fa(int?a)

{

return?a*a;

}

int?fb(int?a)

{

return?fa(a)+fa(a);

}

這就是不同函數(shù)調(diào)用的例子。

在c語言中主函數(shù)如何調(diào)用子函數(shù)?

#include stdio.h

#include stdlib.h

int test1(int a)

{

printf("a=%d\n",a);

return 0

}

int main()

{

int a=1;

test1(a); /*這樣調(diào)用即可,使用函數(shù)名再加上參數(shù)就OK*/

return 0;

}

文章標(biāo)題:調(diào)用子函數(shù)c語言 子函數(shù)調(diào)用子函數(shù)
文章來源:http://muchs.cn/article4/hgioie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、靜態(tài)網(wǎng)站小程序開發(fā)、定制網(wǎng)站、ChatGPT品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)