一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C語言入門教程-函數(shù)

 ldjsld 2016-07-31

函數(shù)

大多數(shù)編程語言都支持定義某種形式的函數(shù)。使用函數(shù)可以將一個大程序分解為小的代碼塊并分別命名,然后這些命名的代碼塊就可以在整個程序中重復使用了。函數(shù)輸入?yún)?shù)并返回一個結(jié)果。C函數(shù)可以輸入的參數(shù)個數(shù)沒有限制。一般來說,對于編譯器而言,只要在調(diào)用函數(shù)以前事先聲明函數(shù)名稱,則各函數(shù)在程序中的順序并不重要。

我們已經(jīng)討論過一些有關(guān)函數(shù)的內(nèi)容了。前面遇到的rand函數(shù)幾乎是最簡單的函數(shù)了。它不接受參數(shù)并返回一個整數(shù):


int rand()
/* 摘自 K&R
   - 生成一個0-32767之間的隨機數(shù)字。*/
{rand_seed = rand_seed * 1103515245 +12345;return (unsigned int)(rand_seed / 65536) % 32768;}

int rand()這些程序定義了rand函數(shù),還指明rand沒有輸入?yún)?shù)并返回一個整數(shù)。此函數(shù)沒有局部變量,但如果需要的話,局部變量會緊接著打開的{開始。(C 允許您在任何 { 后面聲明變量,這些變量一直存在,直到程序執(zhí)行至那個匹配的 } 為止,此后即不復存在。因此函數(shù)的局部變量在遇到函數(shù)中匹配的 } 時就消失了。在其生存周期內(nèi),局部變量被保存在系統(tǒng)棧上。)請注意第一行的()后面沒有;。您若不小心加上了分號,編譯器會給出一大堆莫名其妙的錯誤信息。另外還要注意即使當函數(shù)沒有參數(shù)時也要使用()。括號告訴編譯器您在聲明一個函數(shù)而不是簡單地聲明一個int類型。

對于任何要返回結(jié)果的函數(shù)來說,return語句是不可或缺的。它指明函數(shù)要返回的值并使函數(shù)立即退出。因此您可以在函數(shù)中放置多個return語句作為函數(shù)的多個退出點。若函數(shù)中沒有return語句,則函數(shù)在執(zhí)行到 } 時退出并返回一個隨機值(這時很多編譯器會發(fā)出警告)。C中的函數(shù)可以返回任何類型的值:包括int、float、char、結(jié)構(gòu)體等等。

調(diào)用rand函數(shù)的方式有許多種。例如:x=rand();。此語句中x被賦值為rand的返回值。注意,在函數(shù)調(diào)用中即使沒有參數(shù)也必須使用(),否則x將被賦值為rand函數(shù)的內(nèi)存地址,而這通常并非您的本意。

也可以用這種方式調(diào)用rand:

if (rand() > 100)

或:

rand();

后一種方式中,rand函數(shù)被調(diào)用了,可是其返回值隨即被丟棄。您可能不會以這種方式使用rand,但很多函數(shù)會返回某種錯誤代碼作為調(diào)用結(jié)果,而您又不關(guān)心這些錯誤代碼的話(如您知道不可能發(fā)生錯誤),就可以用這種調(diào)用方式將其丟棄。

如果您不想返回任何值的話,函數(shù)可以使用void作為返回類型。例如:

void print_header()
{printf("第一個程序\n");printf("作者 Marshall Brain\n");
printf("版本 1.0, 發(fā)布于1991年12月26日\n");}

此函數(shù)沒有返回值。可以像下面這樣調(diào)用:

print_header();

調(diào)用時必須加上(),否則函數(shù)不會被調(diào)用,即使此語句在很多系統(tǒng)上能通過編譯。

C函數(shù)可以接受任何類型的參數(shù)。例如:

 fact(int i)
{int j,k;j=1;for (k=2; k<=i; k++)
j=j*k;return j;}

返回傳入的整型參數(shù)i的階乘。用逗號分隔多個參數(shù):

int add (int i, int j)
{return i+j;}

C語言經(jīng)歷了許多年的演變。有時您會看到用“舊式風格”編寫的函數(shù)。以add為例:

int add(i,j)
int i;int j;{return i+j;}

您應該能夠讀懂舊式代碼。它們在執(zhí)行上并無不同,只不過是另一種書寫格式罷了。編寫程序時應該使用“新式風格”(稱為ANSI C),把類型聲明寫在參數(shù)列表中;除非您要把代碼交付給只有“舊式”(非ANSI C)編譯器的人。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美黑人黄色一区二区| 欧美一区二区不卡专区| 欧美人妻盗摄日韩偷拍| 99久久精品久久免费| 色综合久久超碰色婷婷| 沐浴偷拍一区二区视频| 亚洲熟女国产熟女二区三区| 国产又粗又猛又大爽又黄同志| 国产亚洲成av人在线观看| 五月天丁香婷婷一区二区| 深夜福利欲求不满的人妻| 国产成人亚洲欧美二区综| 欧美日韩国产福利在线观看| 大香蕉再在线大香蕉再在线| 99在线视频精品免费播放| 色婷婷丁香激情五月天| 久久精品免费视看国产成人| 欧美激情视频一区二区三区| 成人午夜激情免费在线| 初尝人妻少妇中文字幕在线| 好吊妞视频只有这里有精品| 高清在线精品一区二区| 日韩中文字幕视频在线高清版 | 九七人妻一区二区三区| 亚洲品质一区二区三区| 国产中文字幕一二三区| 国产一区二区三区不卡| 日韩av欧美中文字幕| 日韩欧美国产三级在线观看| 日本高清不卡在线一区| 日韩欧美综合中文字幕| 91人妻人人揉人人澡人| 日韩精品中文字幕亚洲| 十八禁日本一区二区三区| 91免费一区二区三区| 丝袜视频日本成人午夜视频| 国产美女精品午夜福利视频 | 在线免费观看一二区视频| 91亚洲国产成人久久| 熟女中文字幕一区二区三区| 国产传媒精品视频一区|