9.1 函式的原型和呼叫
在使用乙個函式前必須定義或者宣告函式。
9.2 函式的形參與實參
在呼叫函式的時候,函式大多數都有引數,主調函式和被呼叫函式之間需要傳遞資料。
在定義函式時函式名後面括弧中的變數名稱為「形式引數」,簡稱形參。在呼叫函式時,函式名後面括號中的變數或表示式稱為「實際引數」,簡稱實參。
1 形參在未出現函式呼叫時,他們並不占用記憶體單元,只有在發生函式呼叫的時候形參才被分配記憶體,函式呼叫完成後,形參所佔的記憶體被釋放;
2 實參可以是變數,常量或者表示式;
3 在定義函式時,一定要指定形參的資料型別;
4 形參與實參的資料型別一定要可相容;
5 在c語言中,實參與形參的資料傳遞是「值傳遞」,即單向傳遞,只由實參傳遞給形參,而不能由形參傳遞給實參。
如果函式的引數是個陣列,那麼是可以通過形參修改實參的值的。
9.3 函式的返回型別與返回值
1 函式的返回值通過函式中的return獲得,如果函式的返回值為void可以不需要return語句;
2 函式return語句中的返回值資料型別應該與函式定義時相同;
3 如果函式中沒有return語句,那麼函式將返回乙個不確定的值。
如果c語言乙個函式沒有明確的標明函式的返回型別,那麼函式的返回型別就是int;
如果乙個函式沒有返回值,那麼函式的返回型別是void;
9.4 main函式與exit函式與函式的return語句
exit(0); //在子函式中呼叫exit同樣代表程式終止,但在子函式中呼叫return只是子函式終止,程式正常執行。
exit是c語言的庫函式,呼叫exit的結果就是程式終止,在main函式中呼叫exit與呼叫return是一樣的;
main函式return代表程式終止。
9.5 多個源**檔案程式的編譯
9.5.1 標頭檔案的使用
如果把main函式放在第乙個檔案中,而把自定義函式放在第二個檔案中,那麼就需要在第乙個檔案中宣告函式原型。
如果把函式原型包含在乙個標頭檔案裡,那麼就不必每次使用函式的時候都宣告其原型了。把函式宣告放入標頭檔案是很好的習慣。
9.5.2 #include與#define的意義
#include就是簡單的檔案內容替換
#define就是簡單的檔案替換而已
9.5.3 #ifndef 與#endif
在標頭檔案.h中,
#ifndef 巨集名
#define 巨集名//具體巨集的名字是自定義的
//函式的宣告
#endif
作用:防止多次include的同乙個標頭檔案的時候,重複預編譯標頭檔案內容
防止標頭檔案被重複包含
#ifndef的意思就是條件預編譯,如果#ifndef後面的條件成立,那麼就預編譯從#ifndef開始到#endif之間的**,否則不會去預編譯這段**。
在#ifndef中的巨集,一定要大寫和下劃線,必要的時候加數字,目的是為了避免和其他標頭檔案中的巨集名字衝突。
#ifdef,#ifndef叫條件編譯語句;
#ifdef 巨集,如果巨集被定義了,那麼編譯語句;
#ifndef 巨集,如果巨集被定義了,那麼就不編譯語句。
9.6 函式的遞迴
函式可以呼叫自己,這就叫函式的遞迴。
#include
void
test
(int n)
}int
main()
9.6.1 遞迴的過程分析
案例:將十進位制轉換為二進位制
#include
void
test
(int n)
}int
main()
斐波那契數列例子:
斐波那契數列指的是這樣乙個數列0,1,1,2,3,5,8,13,21,34,55,89,144,…
第0項是0,第1項是第乙個1;
這個數列從第2項開始,每一項都等於前兩項之和。
int
fib(
int n)
}
9.6.2 遞迴的優點
遞迴給某些程式設計問題提供了最簡單的方法。
9.6.3 遞迴的缺點
乙個有缺陷的遞迴會很快耗盡計算機的資源,遞迴的程式難以理解和維護。
C語言總結9 C語言檔案操作
磁碟上的檔案是檔案 檔案包含檔案內容和檔案屬性,都是資料,需要儲存 檔案分為程式檔案 源程式檔案 目標檔案 可執行程式檔案 和資料檔案 資料檔案分為文字檔案 以ascii碼的形式儲存 和二進位制檔案 以為二進位制的形式儲存 1 從記憶體向磁碟輸入資料會先送到記憶體中的緩衝區,裝滿緩衝區之後才一起送到...
C語言 9 C語言的浮點資料型別
c語言系列課8 一文吃透c語言整型 c語言系列課7 10分鐘學會c語言基礎語法 c語言系列課6 hello world 第乙個c語言程式 c語言系列課5 visual studio整合開發環境的搭建 我們來討論一下類似於1.234567,0.00001,這類非整數的資料。我們可以先試試看,int能不...
9 C語言基本資料型別
有符號數 記憶體空間最高位元組是符號位。無符號數 記憶體空間最高位元組是資料。int 預設是有符號的.一般,有符號數用於計算,無符號數表示資料.對於右移運算,有符號數無法進行運算,因為最高位永遠是符號位 無符號數,更多的同於資料的採集 訪問 有符號數代表數字 浮點型與整型在記憶體中的儲存結構不同 浮...