函數是一組一起執(zhí)行一個任務的語句。每個 C 程序都至少有一個函數,即主函數 main() ,所有簡單的程序都可以定義其他額外的函數。
成都一家集口碑和實力的網站建設服務商,擁有專業(yè)的企業(yè)建站團隊和靠譜的建站技術,十余年企業(yè)及個人網站建設經驗 ,為成都1000多家客戶提供網頁設計制作,網站開發(fā),企業(yè)網站制作建設等服務,包括成都營銷型網站建設,品牌網站設計,同時也為不同行業(yè)的客戶提供網站設計、做網站的服務,包括成都電商型網站制作建設,裝修行業(yè)網站制作建設,傳統(tǒng)機械行業(yè)網站建設,傳統(tǒng)農業(yè)行業(yè)網站制作建設。在成都做網站,選網站制作建設服務商就選創(chuàng)新互聯。
您可以把代碼劃分到不同的函數中。如何劃分代碼到不同的函數中是由您來決定的,但在邏輯上,劃分通常是根據每個函數執(zhí)行一個特定的任務來進行的。
C 標準庫提供了大量的程序可以調用的內置函數。例如,函數 strcat() 用來連接兩個字符串,函數 memcpy() 用來復制內存到另一個位置。
函數還有很多叫法,比如方法、子例程或程序,等等。
C 語言中的函數定義的一般形式如下:
在 C 語言中,函數由一個函數頭和一個函數主體組成。下面列出一個函數的所有組成部分:
以下是 max() 函數的源代碼。該函數有兩個參數 num1 和 num2,會返回這兩個數中較大的那個數:
創(chuàng)建 C 函數時,會定義函數做什么,然后通過調用函數來完成已定義的任務。
當程序調用函數時,程序控制權會轉移給被調用的函數。被調用的函數執(zhí)行已定義的任務,當函數的返回語句被執(zhí)行時,或到達函數的結束括號時,會把程序控制權交還給主程序。
調用函數時,傳遞所需參數,如果函數返回一個值,則可以存儲返回值。例如:
如上把 max() 函數和 main() 函數放一塊,編譯源代碼。當運行最后的可執(zhí)行文件時,會產生下列結果:
形式參數就像函數內的其他局部變量,在進入函數時被創(chuàng)建,退出函數時被銷毀。
當調用函數時,有兩種向函數傳遞參數的方式:
默認情況下,C 使用 傳值調用 來傳遞參數。一般來說,這意味著函數內的代碼不能改變用于調用函數的實際參數。
C語言輸入輸出函數有很多,標準I/O函數中包含了如下幾個常用的函數:
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int
getc(FILE
*fp)
getc主要是從文件中讀出一個字符.常用的判斷文件是否讀取結束的語句為
(ch
=
getc(fp))
!=
EOF.EOF為文件結束標志,定義在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定義在stdlib.h中一樣,文件也可以被理解為一種流,所以當fp為stdin時,getc(stdin)就等同于getchar()了.
int
putc(int
ch,FILE
*fp)
putc主要是把字符ch寫到文件fp中去.如果fp為stdout,則putc就等同于putchar()了.
int
getchar(void)
getchar主要是從標準輸入流讀取一個字符.默認的標準輸入流即stdio.h中定義的stdin.但是從輸入流中讀取字符時又涉及到緩沖的問題,所以并不是在屏幕中敲上一個字符程序就會運行,一般是通過在屏幕上敲上回車鍵,然后將回車前的字符串放在緩沖區(qū)中,getchar就是在緩沖區(qū)中一個一個的讀字符.當然也可以在while循環(huán)中指定終止字符,如下面的語句:while
((c
=
getchar())
!=
'#')這是以#來結束的.
int
putchar(int
ch)
putchar(ch)主要是把字符ch寫到標準流stdout中去.
char
*
gets(char
*str)
gets主要是從標準輸入流讀取字符串并回顯,讀到換行符時退出,并會將換行符省去.
int
puts(char
*str)
puts主要是把字符串str寫到標準流stdout中去,并會在輸出到最后時添加一個換行符.
char
*fgets(char
*str,
int
num,
FILE
*fp)
str是存放讀入的字符數組指針,num是最大允許的讀入字符數,fp是文件指針.fgets的功能是讀一行字符,該行的字符數不大于num-1.因為fgets函數會在末尾加上一個空字符以構成一個字符串.另外fgets在讀取到換行符后不會將其省略.
int
fputs(char
*str,
file
*fp)
fputs將str寫入fp.fputs與puts的不同之處是fputs在打印時并不添加換行符.
int
fgetc(FILE
*fp)
fgetc從fp的當前位置讀取一個字符.
int
fputc(int
ch,
file
*fp)
fputc是將ch寫入fp當前指定位置.
int
fscanf(FILE
*fp,
char
*format,
輸入列表)
fscanf按照指定格式從文件中出讀出數據,并賦值到參數列表中.
int
fprintf(FILE
*fp,
char
*format,
輸出列表)
fprintf將格式化數據寫入流式文件中.
數據塊讀寫函數
fread
(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
參數說明:
buffer:是一個指針。
對fread
來說,它是讀入數據的存放地址。
對fwrite來說,是要輸出數據的地址(均指起始地址)。
size:
要讀寫的字節(jié)數。
count:
要進行讀寫多少個size字節(jié)的數據項。
fp:
文件型指針。
函數是數學名詞,代數式中,凡相關的兩數X與Y,對于每個X值,都只有一個Y的對應值。這種對應關系就表示Y是X的函數。
函數(function)的定義通常分為傳統(tǒng)定義和近代定義,函數的兩個定義本質是相同的,只是敘述概念的出發(fā)點不同,傳統(tǒng)定義是從運動變化的觀點出發(fā),而近代定義是從集合、映射的觀點出發(fā)。
函數的近代定義是給定一個數集A,假設其中的元素為x,對A中的元素x施加對應法則f,記作f(x),得到另一數集B,假設B中的元素為y,則y與x之間的等量關系可以用y=f(x)表示,函數概念含有三個要素:定義域A、值域B和對應法則f。其中核心是對應法則f,它是函數關系的本質特征。
函數,最早由中國清朝數學家李善蘭翻譯,出于其著作《代數學》。之所以這么翻譯,他給出的原因是“凡此變數中函彼變數者,則此為彼之函數”,也即函數指一個量隨著另一個量的變化而變化,或者說一個量。
C語言的發(fā)展頗為有趣,它的原型ALGOL 60語言。那么大家知道C語言函數是什么嗎?下面一起來看看!
函數(Function)是一段可以重復使用的代碼,這是從整體上對函數的認識。
C語言本身帶了很多庫函數,并分門別類地放在了不同的頭文件中,使用時只要引入對應的頭文件即可。
除了C語言自帶的.函數,我們也可以編寫自己的函數,稱為自定義函數(User-Defined Function)。自定義函數和庫函數沒有本質的區(qū)別,表現形式和使用方法一樣,只是開發(fā)者不同而已。
這一章我們就來講解如何編寫和使用自己的函數。
參數
函數的一個明顯特征就是使用時帶括號( ),必要的話,括號中還要包含數據或變量,稱為參數(Parameter)。參數是函數需要處理的數據,例如:
strlen(str1)用來計算字符串的長度,str1就是參數。
puts("C語言中文網")用來輸出字符串,"C語言中文網"就是參數。
返回值
既然函數可以處理數據,那就有必要將處理結果告訴我們,所以很多函數都有返回值(Return Value)。所謂返回值,就是函數的執(zhí)行結果。例如:
char str1[] = "C Language";
int len = strlen(str1);
strlen() 的處理結果是字符串 str1 的長度,是一個整數,我們通過 len 變量來接收。
函數返回值有固定的數據類型(int、char、float等),用來接收返回值的變量類型要一致。