定義函數(shù)

創(chuàng)新互聯(lián)公司成立與2013年,公司以成都做網(wǎng)站、網(wǎng)站制作、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計(jì)等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶成百上千,涉及國(guó)內(nèi)多個(gè)省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗(yàn)。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計(jì)、宣傳推廣等服務(wù)。 通過(guò)專業(yè)的設(shè)計(jì)、獨(dú)特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。
C 語(yǔ)言中的函數(shù)定義的一般形式如下:
return_type function_name( parameter list )
{
body of the function
}
在 C 語(yǔ)言中,函數(shù)由一個(gè)函數(shù)頭和一個(gè)函數(shù)主體組成。下面列出一個(gè)函數(shù)的所有組成部分:
返回類型:一個(gè)函數(shù)可以返回一個(gè)值。return_type 是函數(shù)返回的值的數(shù)據(jù)類型。有些函數(shù)執(zhí)行所需的操作而不返回值,在這種情況下,return_type 是關(guān)鍵字 void。
函數(shù)名稱:這是函數(shù)的實(shí)際名稱。函數(shù)名和參數(shù)列表一起構(gòu)成了函數(shù)簽名。
參數(shù):參數(shù)就像是占位符。當(dāng)函數(shù)被調(diào)用時(shí),您向參數(shù)傳遞一個(gè)值,這個(gè)值被稱為實(shí)際參數(shù)。參數(shù)列表包括函數(shù)參數(shù)的類型、順序、數(shù)量。參數(shù)是可選的,也就是說(shuō),函數(shù)可能不包含參數(shù)。
函數(shù)主體:函數(shù)主體包含一組定義函數(shù)執(zhí)行任務(wù)的語(yǔ)句。
需要準(zhǔn)備的材料分別有:電腦、C語(yǔ)言編譯器。
1、首先,打開C語(yǔ)言編譯器,新建一個(gè)初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,輸入C語(yǔ)言代碼:int fun(){return 1;}。
3、編譯器運(yùn)行test.cpp文件,此時(shí)成功調(diào)用fun()函數(shù)輸出了內(nèi)容。
直接調(diào)用即可。如下示例:
#includestdio.h#define?sum(b,c){int?d=0;d=b+c;printf("兩者的和:%d\n",d);}int?main(){????int?x=0,y=0;????scanf("%d%d",x,y);????sum?(x,y);????return?0;}
拓展資料
使用宏函數(shù)或者宏函數(shù)時(shí),注意如下幾點(diǎn):
1.宏函數(shù)的參數(shù)沒(méi)有類型,預(yù)處理器只負(fù)責(zé)做形式上的替換,而不做參數(shù)類型檢查,所以傳參時(shí)要格外小心。
2.宏函數(shù)定義要注意格式,尤其是括號(hào)。
如果上面的宏函數(shù)寫成 #define MAX(a, b) (ab?a:b),省去內(nèi)層括號(hào),則宏展開就成了k = (i0x0fj0x0f?i0x0f:j0x0f),運(yùn)算的優(yōu)先級(jí)就錯(cuò)了。同樣道理,這個(gè)宏定義的外層括號(hào)也是不能省的。若函數(shù)中是宏替換為 ++MAX(a,b),則宏展開就成了 ++(a)(b)?(a):(b),運(yùn)算優(yōu)先級(jí)也是錯(cuò)了。
3.宏函數(shù)往往會(huì)導(dǎo)致較低的代碼執(zhí)行效率。
若是普通函數(shù),則通過(guò)遞歸,可取的最大值,時(shí)間復(fù)雜度為O(n)。但若是宏函數(shù),則宏展開為( a[n]max(n-1)?a[n]:max(n-1) ),其中max(n-1)被調(diào)用了兩遍,這樣依此遞歸下去,時(shí)間復(fù)雜度會(huì)很高。
c語(yǔ)言中一個(gè)完整的函數(shù)由函數(shù)首部和函數(shù)體構(gòu)成,而且定義函數(shù)時(shí)兩者都是必不可少的。
函數(shù)定義的一般形式如下:
類型標(biāo)識(shí)符
函數(shù)名(形參表列)
//
這是函數(shù)首部
//
以下{
}內(nèi)的是函數(shù)體
{
說(shuō)明部分
執(zhí)行部分
}
舉例說(shuō)明如下:
//
定義一個(gè)不帶返回值的函數(shù)
//
函數(shù)功能:輸出形參的值
void
fun(int
a,
int
b)
{
printf("%d,
%d\n",
a,
b);
}
//
定義一個(gè)帶返回值的函數(shù)
//
函數(shù)功能:返回2個(gè)整數(shù)數(shù)的最大值
int
fun(int
a,
int
b)
{
return
ab
?
a
:
b;
}
我的理解,C語(yǔ)言程序的宏觀框架應(yīng)該是這樣的:
包含有關(guān)頭文件
常量和變量的定義——這部分不是必須的
函數(shù)的聲明或定義——這部分不是必須的
主函數(shù)(main函數(shù))的定義
函數(shù)的定義——這部分不是必須的
以下答案都是來(lái)自譚浩強(qiáng)的《C程序設(shè)計(jì)》這本書很好懂,是大家公認(rèn)的C語(yǔ)言入門書籍!強(qiáng)烈建議去買一本或者下一本,我這有WORD版本的,要的話加我QQ我發(fā)給你:993437324
20.4.1 函數(shù)調(diào)用的一般形式
在程序中是通過(guò)對(duì)函數(shù)的調(diào)用來(lái)執(zhí)行函數(shù)體的,其過(guò)程與其它語(yǔ)言的子程序調(diào)用相似。
C語(yǔ)言中,函數(shù)調(diào)用的一般形式為:
函數(shù)名(實(shí)際參數(shù)表)
對(duì)無(wú)參函數(shù)調(diào)用時(shí)則無(wú)實(shí)際參數(shù)表。實(shí)際參數(shù)表中的參數(shù)可以是常數(shù),變量或其它構(gòu)造類型數(shù)據(jù)及表達(dá)式。各實(shí)參之間用逗號(hào)分隔。
20.4.2 函數(shù)調(diào)用的方式
在C語(yǔ)言中,可以用以下幾種方式調(diào)用函數(shù):
1. 函數(shù)表達(dá)式:函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中,以函數(shù)返回值參與表達(dá)式的運(yùn)算。這種方式要求函數(shù)是有返回值的。例如:z=max(x,y)是一個(gè)賦值表達(dá)式,把max的返回值賦予變量z。
2. 函數(shù)語(yǔ)句:函數(shù)調(diào)用的一般形式加上分號(hào)即構(gòu)成函數(shù)語(yǔ)句。例如: printf ("%d",a);scanf ("%d",b);都是以函數(shù)語(yǔ)句的方式調(diào)用函數(shù)。
3. 函數(shù)實(shí)參:函數(shù)作為另一個(gè)函數(shù)調(diào)用的實(shí)際參數(shù)出現(xiàn)。這種情況是把該函數(shù)的返回值作為實(shí)參進(jìn)行傳送,因此要求該函數(shù)必須是有返回值的。例如: printf("%d",max(x,y)); 即是把max調(diào)用的返回值又作為printf函數(shù)的實(shí)參來(lái)使用的。在函數(shù)調(diào)用中還應(yīng)該注意的一個(gè)問(wèn)題是求值順序的問(wèn)題。所謂求值順序是指對(duì)實(shí)參表中各量是自左至右使用呢,還是自右至左使用。對(duì)此,各系統(tǒng)的規(guī)定不一定相同。介紹printf 函數(shù)時(shí)已提到過(guò),這里從函數(shù)調(diào)用的角度再?gòu)?qiáng)調(diào)一下。
【例8.3】
main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
}
如按照從右至左的順序求值。運(yùn)行結(jié)果應(yīng)為:
8
7
7
8
如對(duì)printf語(yǔ)句中的++i,--i,i++,i--從左至右求值,結(jié)果應(yīng)為:
9
8
8
9
應(yīng)特別注意的是,無(wú)論是從左至右求值, 還是自右至左求值,其輸出順序都是不變的, 即輸出順序總是和實(shí)參表中實(shí)參的順序相同。由于Turbo C現(xiàn)定是自右至左求值,所以結(jié)果為8,7,7,8。上述問(wèn)題如還不理解,上機(jī)一試就明白了。
20.4.3 被調(diào)用函數(shù)的聲明和函數(shù)原型
在主調(diào)函數(shù)中調(diào)用某函數(shù)之前應(yīng)對(duì)該被調(diào)函數(shù)進(jìn)行說(shuō)明(聲明),這與使用變量之前要先進(jìn)行變量說(shuō)明是一樣的。在主調(diào)函數(shù)中對(duì)被調(diào)函數(shù)作說(shuō)明的目的是使編譯系統(tǒng)知道被調(diào)函數(shù)返回值的類型,以便在主調(diào)函數(shù)中按此種類型對(duì)返回值作相應(yīng)的處理。
其一般形式為:
類型說(shuō)明符 被調(diào)函數(shù)名(類型 形參,類型 形參…);
或?yàn)椋?/p>
類型說(shuō)明符 被調(diào)函數(shù)名(類型,類型…);
括號(hào)內(nèi)給出了形參的類型和形參名,或只給出形參類型。這便于編譯系統(tǒng)進(jìn)行檢錯(cuò),以防止可能出現(xiàn)的錯(cuò)誤。
例8.1 main函數(shù)中對(duì)max函數(shù)的說(shuō)明為:
int max(int a,int b);
或?qū)憺?
int max(int,int);
C語(yǔ)言中又規(guī)定在以下幾種情況時(shí)可以省去主調(diào)函數(shù)中對(duì)被調(diào)函數(shù)的函數(shù)說(shuō)明。
1) 如果被調(diào)函數(shù)的返回值是整型或字符型時(shí),可以不對(duì)被調(diào)函數(shù)作說(shuō)明,而直接調(diào)用。這時(shí)系統(tǒng)將自動(dòng)對(duì)被調(diào)函數(shù)返回值按整型處理。例8.2的主函數(shù)中未對(duì)函數(shù)s作說(shuō)明而直接調(diào)用即屬此種情形。
2) 當(dāng)被調(diào)函數(shù)的函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前時(shí),在主調(diào)函數(shù)中也可以不對(duì)被調(diào)函數(shù)再作說(shuō)明而直接調(diào)用。例如例8.1中,函數(shù)max的定義放在main 函數(shù)之前,因此可在main函數(shù)中省去對(duì)max函數(shù)的函數(shù)說(shuō)明int max(int a,int b)。
3) 如在所有函數(shù)定義之前,在函數(shù)外預(yù)先說(shuō)明了各個(gè)函數(shù)的類型,則在以后的各主調(diào)函數(shù)中,可不再對(duì)被調(diào)函數(shù)作說(shuō)明。例如:
char str(int a);
float f(float b);
main()
{
……
}
char str(int a)
{
……
}
float f(float b)
{
……
}
其中第一,二行對(duì)str函數(shù)和f函數(shù)預(yù)先作了說(shuō)明。因此在以后各函數(shù)中無(wú)須對(duì)str和f函數(shù)再作說(shuō)明就可直接調(diào)用。
4) 對(duì)庫(kù)函數(shù)的調(diào)用不需要再作說(shuō)明,但必須把該函數(shù)的頭文件用include命令包含在源文件前部。
分享文章:c語(yǔ)言如何宏觀定義函數(shù),c語(yǔ)言宏定義函數(shù)運(yùn)算
本文鏈接:http://chinadenli.net/article0/hsgcoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、Google、靜態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站、企業(yè)網(wǎng)站制作、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)