- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 11
函數與副程式
函數的基本概念
C語言的函數(function)其實就是副程式。當程式某部分的敘述總是重複出現時,應考慮使用函數,以減少重複。一般而言,函數有下列幾種用途:
避免相同程式段的重複出現。
開發較大程式時,可以分工處理,到最後才將函數連結在一起。
增加程式的可讀性,減少維護成本。
程式之結構化。
函數定義與叫用
格式如下:
不傳回值 void main(void)
{
… 不傳參數
func( );
回到主程式
…
}
函數傳回值型態
int func( )
{
…
return(x);
}
範例:
#include stdio.h
void main( )
{
void test(void); //函數宣告
text( ); //呼叫函數
}
void test(void) //函數定義
{
printf(“This is a test!\n”);
}
函數基本型式
函數定義
函數定義,即函數的建立,可分為開部分及主體部分。開頭部分包括函數名稱與參數宣告部分。至於主體部分則由左大括號”{“及右大括號”}”構成,基本格式與主程式一樣。
傳回值型態 函數名稱(型態一 參數一, …, 型態n 參數n)
{
函數主體
}
例:
函數名 參數
int func(int a, int b)
{
…
return(c); 傳回值
}
函數宣告
函數宣告有別於函數本身(定義);如同變數之宣告,函數亦須經過宣告,包括函數名及資料型態。如果函數定義出現在呼叫它的主程式之前,便可直接使用而不用宣告。
例:
void main( )
{
int func(int a1, char a2); //函數宣告
…
func(a1, a2); //呼叫函數
}
int func(int b1, char b2) //函數定義
{
…
}
或
int func(int b1, char b2)
{
…
}
void main( )
{
…
func(a1, a2); //可直接呼叫函數,不需宣告
}
函數的呼叫
函數的呼叫形式大致可分成四種:
不傳參數、不傳回值。例:void func(void)
不傳參數、有傳回值。例:int func(void)
傳參數、不傳回值。例:void func(int a)
傳參數、有傳回值。例:int func(int a)
分別舉例如後。
不傳參數、不傳回值
#include stdio.h
void main( )
{
void abc(void); // 函數abc之宣告
printf(main program start.\n);
abc( ); // 呼叫abc
printf(main program end.\n);
}
void abc(void) // 函數abc定義
{
printf(ABC\n); // 函數主體
}
執行結果:
main program start.
ABC
main program end.
不傳參數、有傳回值
一個函數若具有傳回,則可利用return指令將結果傳回主函數,return的作用在於結束函數並返回原呼叫函數。一旦執行到 return,該函數便會立即結束並返回。
return的用法為:
return 傳回值;
或
return(傳回值);
範例:
#include stdio.h
void main( )
{
int func(void);
int a;
a = func( ); // 呼叫函數func,其傳回值存至變數a
printf(a=%d\n, a); // 印出變數a的值
}
int func(void)
{
return 5; // 結束函數,並傳回值 5
}
執行結果:
a=5
傳參數、不傳回值
範例:設計一個兩數相乘的函數
#include stdio.h
void func(int, int);
void main( )
{
int i=2; j=4;
func(i, j);
}
void func(int a, int b)
{
printf(i*j=%d\n, a*b);
}
執行結果:
i*j=8;
解說:
程式第二行:void func(int, int); 為宣告不傳回值,但傳兩個int型態的參數進入函數,該行也可標上參數名,如:void func(int a, int b)或void func(int c, int d),其中參數名亦可與函數定義的參數名不同,因為此行主要目的在宣告型態。
文档评论(0)