來傳送子函數(shù)中的數(shù)組有多種方法——可以通過函數(shù)返回值返回地址傳遞數(shù)組;也可以通過函數(shù)輸入?yún)?shù)來傳遞數(shù)組;還可以通過全局變量來傳遞數(shù)組。

創(chuàng)新互聯(lián)主營富川網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),富川h5小程序定制開發(fā)搭建,富川網(wǎng)站營銷推廣歡迎富川等地區(qū)企業(yè)咨詢
子函數(shù)本身可以直接在作用域中進行調(diào)用。
1、通過函數(shù)返回值返回地址傳遞數(shù)組。
聲明函數(shù)時需要聲明函數(shù)返回值類型為對應(yīng)數(shù)組的地址,此時可以返回數(shù)組的地址,結(jié)合數(shù)組元素的地址關(guān)系可以傳遞整個數(shù)組,同時可以根據(jù)數(shù)組的特性傳遞多個參數(shù)。
2、通過輸入?yún)?shù)傳遞數(shù)組。
聲明函數(shù)時提供空輸入?yún)?shù),調(diào)用函數(shù)時提供目標(biāo)數(shù)組,即可以通過該數(shù)組調(diào)用子函數(shù)中的數(shù)組,該方法也可以用于傳遞多個參數(shù)。
3、通過全局變量來傳遞數(shù)組。
聲明全局變量用于存儲子函數(shù)中的數(shù)組,此時可以在全局變量作用域中讀取調(diào)用子函數(shù)的數(shù)組。
注意:子函數(shù)是C語言模塊化編程思想的核心,其方法是通過輸入接口和輸出接口實現(xiàn)對黑盒的調(diào)用,故對其內(nèi)部數(shù)據(jù)的輸入和調(diào)用也需要通過輸入接口、輸出接口和程序的公共區(qū)域?qū)崿F(xiàn)。
C語言中調(diào)用函數(shù)的方法及步驟:
工具/原料:C語言
1、首先需要輸入想要調(diào)用的函數(shù)。
2、然后當(dāng)輸入一個括號后,即可觀察他的參數(shù)。
3、接著在對應(yīng)的參數(shù)中輸入?yún)?shù)值。
4、然后,系統(tǒng)會發(fā)生一個警告。
5、接著需要調(diào)用它相應(yīng)的頭文件。
6、最后再次編譯,發(fā)現(xià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語言是由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++ 的異常去解決比較好。
#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;
}
可以的。
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)用的例子。
當(dāng)前標(biāo)題:簡單c語言調(diào)用子函數(shù),C語言調(diào)用子函數(shù)
轉(zhuǎn)載注明:http://chinadenli.net/article13/dsgedgs.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、外貿(mào)建站、微信公眾號、微信小程序、Google、網(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)