在使用一個(gè)函數(shù)之前必須先對(duì)他進(jìn)行聲明:
成都創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供天元網(wǎng)站建設(shè)、天元做網(wǎng)站、天元網(wǎng)站設(shè)計(jì)、天元網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、天元企業(yè)網(wǎng)站模板建站服務(wù),10年天元做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
//void B();聲明B函數(shù)的存在。void A(){B();//非法,程序執(zhí)行到此時(shí)并不知道B函數(shù)的存在。}void B(){}
或者
#include stdio.h
#include stdlib.h
#include math.h
int fa(int n)
{
int a;
for(a=2;a=sqrt(n*1.0),n%a!=0;a++);
if(asqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",n);
擴(kuò)展資料
#include stdio.h
#include stdlib.h
#include math.h
int fa(int n)
{
int a;
for(a=2;a=sqrt(n*1.0),n%a!=0;a++);
if(asqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",n);
if(fa(n)==1)
printf("n");
else
printf("y");
system("pause");
exit(0);
}
參考資料:百度百科 - C語(yǔ)言函數(shù)
函數(shù)定義好以后,要被其它函數(shù)調(diào)用了才能被執(zhí)行。C
語(yǔ)言的函數(shù)是能相互調(diào)用的,
但在調(diào)用函數(shù)前,必須對(duì)函數(shù)的類(lèi)型進(jìn)行說(shuō)明,就算是標(biāo)準(zhǔn)庫(kù)函數(shù)也不例外。標(biāo)準(zhǔn)庫(kù)函數(shù)的
說(shuō)明會(huì)被按功能分別寫(xiě)在不一樣的頭文件中,使用時(shí)只要在文件最前面用#include
預(yù)處理語(yǔ)
句引入相應(yīng)的頭文件。如前面一直有使用的
printf
函數(shù)說(shuō)明就是放在文件名為
stdio.h
的
頭文件中。調(diào)用就是指一個(gè)函數(shù)體中引用另一個(gè)已定義的函數(shù)來(lái)實(shí)現(xiàn)所需要的功能,這個(gè)時(shí)候函
數(shù)體稱(chēng)為主調(diào)用函數(shù),函數(shù)體中所引用的函數(shù)稱(chēng)為被調(diào)用函數(shù)。一個(gè)函數(shù)體中能調(diào)用數(shù)個(gè)
其它的函數(shù),這些被調(diào)用的函數(shù)同樣也能調(diào)用其它函數(shù),也能嵌套調(diào)用。筆者本人認(rèn)為
主函數(shù)只是相對(duì)于被調(diào)用函數(shù)而言。在
c51
語(yǔ)言中有一個(gè)函數(shù)是不能被其它函數(shù)所調(diào)用的,
它就是
main
主函數(shù)。調(diào)用函數(shù)的一般形式如下:
函數(shù)名
(實(shí)際參數(shù)表)
“函數(shù)名”就是指被調(diào)用的函數(shù)。實(shí)際參數(shù)表能為零或多個(gè)參數(shù),多個(gè)參數(shù)時(shí)要用逗
號(hào)隔開(kāi),每個(gè)參數(shù)的類(lèi)型、位置應(yīng)與函數(shù)定義時(shí)所的形式參數(shù)一一對(duì)應(yīng),它的作用就是把參
數(shù)傳到被調(diào)用函數(shù)中的形式參數(shù),如果類(lèi)型不對(duì)應(yīng)就會(huì)產(chǎn)生一些錯(cuò)誤。調(diào)用的函數(shù)是無(wú)參函
數(shù)時(shí)不寫(xiě)參數(shù),但不能省后面的括號(hào)。
在以前的一些例子我們也能看不一樣的調(diào)用方式:
1.函數(shù)語(yǔ)句
如
printf
("Hello
World!n");
這是在
我們的第一個(gè)程序中出現(xiàn)的,它以
"Hello
World!n"為參數(shù)調(diào)用
printf
這個(gè)庫(kù)函數(shù)。在這里函數(shù)調(diào)用被看作了一條語(yǔ)句。
2.函數(shù)參數(shù)
“函數(shù)參數(shù)”這種方式是指被調(diào)用函數(shù)的返回值當(dāng)作另一個(gè)被調(diào)用函數(shù)的實(shí)際參
數(shù),如
temp=StrToInt(CharB(16));CharB
的返回值作為
StrToInt
函數(shù)的實(shí)際參數(shù)傳遞。
3.函數(shù)表達(dá)式
而在上一篇的例子中有
temp
=
Count();這樣一句,這個(gè)時(shí)候函數(shù)的調(diào)用作為一個(gè)運(yùn)算
對(duì)象出現(xiàn)在表達(dá)式中,能稱(chēng)為函數(shù)表達(dá)式。例子中
Count()返回一個(gè)
int
類(lèi)型的返回
值直接賦值給
temp。注意的是這種調(diào)用方式要求被調(diào)用的函數(shù)能返回一個(gè)同類(lèi)型的值,
不然會(huì)出現(xiàn)不可預(yù)料的錯(cuò)誤。
前面說(shuō)到調(diào)用函數(shù)前要對(duì)被調(diào)用的函數(shù)進(jìn)行說(shuō)明。標(biāo)準(zhǔn)庫(kù)函數(shù)只要用#include
引入已
寫(xiě)好說(shuō)明的頭文件,在程序就能直接調(diào)用函數(shù)了。如調(diào)用的是自定義的函數(shù)則要用如下形
式編寫(xiě)函數(shù)類(lèi)型說(shuō)明
類(lèi)型標(biāo)識(shí)符
函數(shù)的名稱(chēng)(形式參數(shù)表);
這樣的說(shuō)明方式是用在被調(diào)函數(shù)定義和主調(diào)函數(shù)是在同一文件中。你也能把這些寫(xiě)到
文件名.h
的文件中用#include
"文件名.h"引入。如果被調(diào)函數(shù)的定義和主調(diào)函數(shù)不是在同
一文件中的,則要用如下的方式進(jìn)行說(shuō)明,說(shuō)明被調(diào)函數(shù)的定義在同一項(xiàng)目的不一樣文件之上,
其實(shí)庫(kù)函數(shù)的頭文件也是如此說(shuō)明庫(kù)函數(shù)的,如果說(shuō)明的函數(shù)也能稱(chēng)為外部函數(shù)。
extern
類(lèi)型標(biāo)識(shí)符
函數(shù)的名稱(chēng)(形式參數(shù)表);
函數(shù)的定義和說(shuō)明是完全不一樣的,在編譯的角度上看函數(shù)的定義是把函數(shù)編譯存放在
ROM
的某一段地址上,而函數(shù)說(shuō)明是告訴編譯器要在程序中使用那些函數(shù)并確定函數(shù)的地
址。如果在同一文件中被調(diào)函數(shù)的定義在主調(diào)函數(shù)之前,這個(gè)時(shí)候能不用說(shuō)明函數(shù)類(lèi)型。也就
是說(shuō)在
main
函數(shù)之前定義的函數(shù),在程序中就能不用寫(xiě)函數(shù)類(lèi)型說(shuō)明了。能在一個(gè)函
數(shù)體調(diào)用另一個(gè)函數(shù)(嵌套調(diào)用),但不允許在一個(gè)函數(shù)定義中定義另一個(gè)函數(shù)。還要注意
的是函數(shù)定義和說(shuō)明中的“類(lèi)型、形參表、名稱(chēng)”等都要相一致。
C語(yǔ)言中,函數(shù)調(diào)用的一般形式為:
函數(shù)名(實(shí)際參數(shù)表)
對(duì)無(wú)參函數(shù)調(diào)用時(shí)則無(wú)實(shí)際參數(shù)表。實(shí)際參數(shù)表中的參數(shù)可以是常數(shù)、變量或其它構(gòu)造類(lèi)型數(shù)據(jù)及表達(dá)式。各實(shí)參之間用逗號(hào)分隔。
#includestdio.h
int?fun(int?x,?int?y);?//?函數(shù)聲明,如果函數(shù)寫(xiě)在被調(diào)用處之前,可以不用聲明
void?main()
{
int?a=1,?b=2,?c;
c?=?fun(a,?b);?//?函數(shù)的調(diào)用,調(diào)用自定義函數(shù)fun,其中a,b為實(shí)際參數(shù),傳遞給被調(diào)用函數(shù)的輸入值
}
//?自定義函數(shù)fun
int?fun(int?x,?int?y)??//?函數(shù)首部
{??//?{}中的語(yǔ)言為函數(shù)體
return?xy???x?:?y;??//?返回x和y中較大的一個(gè)數(shù)
}
擴(kuò)展資料
C語(yǔ)言中不允許作嵌套的函數(shù)定義。因此各函數(shù)之間是平行的,不存在上一級(jí)函數(shù)和下一級(jí)函數(shù)的問(wèn)題。但是C語(yǔ)言允許在一個(gè)函數(shù)的定義中出現(xiàn)對(duì)另一個(gè)函數(shù)的調(diào)用。
這樣就出現(xiàn)了函數(shù)的嵌套調(diào)用。即在被調(diào)函數(shù)中又調(diào)用其它函數(shù)。這與其它語(yǔ)言的子程序嵌套的情形是類(lèi)似的。其關(guān)系可表示如圖。
圖表示了兩層嵌套的情形。其執(zhí)行過(guò)程是:執(zhí)行main函數(shù)中調(diào)用a函數(shù)的語(yǔ)句時(shí),即轉(zhuǎn)去執(zhí)行a函數(shù),在a函數(shù)中調(diào)用b 函數(shù)時(shí),又轉(zhuǎn)去執(zhí)行b函數(shù),b函數(shù)執(zhí)行完畢返回a函數(shù)的斷點(diǎn)繼續(xù)執(zhí)行,a函數(shù)執(zhí)行完畢返回main函數(shù)的斷點(diǎn)繼續(xù)執(zhí)行。
參考資料:函數(shù)調(diào)用_百度百科
1、首先在打開(kāi)的C語(yǔ)言數(shù)據(jù)庫(kù)中,輸入【#include】,如下圖所示。
2、然后輸入尖括號(hào),如下圖所示。
3、接下來(lái)便可以輸入函數(shù)庫(kù)名,如下圖所示。
4、也可以使用雙引號(hào)引起來(lái),如下圖所示。
5、此時(shí),便可以開(kāi)始使用相應(yīng)的函數(shù),如下圖所示。這樣,系統(tǒng)就不會(huì)報(bào)錯(cuò)了。
函數(shù)分為庫(kù)函數(shù)和自定義函數(shù),在調(diào)用庫(kù)函數(shù)時(shí)只要標(biāo)明頭文件(所謂頭文件就是一個(gè)東西,里面包括了一些函數(shù)各聲明之類(lèi)的,當(dāng)你要調(diào)用它中的函數(shù)時(shí)就就得先向程序說(shuō)明你要調(diào)用這個(gè)文件里的函數(shù),否則有有侵權(quán)行為哦)可以在主調(diào)函數(shù)中調(diào)用這個(gè)頭文件里的所有函數(shù)了,例如頭文件為#includestdio.h你就可以在主調(diào)函數(shù)中調(diào)用這個(gè)頭文件里的函數(shù):
main
{ printf("haha");/*這時(shí)main函數(shù)為主調(diào)函數(shù),printf為被調(diào)函數(shù)*/
}
調(diào)用自定義函數(shù)時(shí)其實(shí)和調(diào)用庫(kù)函數(shù)一樣的,只不過(guò)這個(gè)函數(shù)是你自己定義的,再如:
main
{ void f();/*聲明 f()函數(shù)*/
f(); /*調(diào)用f()函數(shù)*/
}
f()
{
printf("haha");/*f()函數(shù)調(diào)用庫(kù)函數(shù)*/
}