c語言程式中可以使用分組的方式管理語句;每個語句分組叫做乙個函式。
多函式執行模式有如下特點:
整個程式的執行時間被分解成幾段,每段時間被分給乙個函式使用。
任何兩個時間段不能互相重疊並且所有時間段必須連續。
如果函式a在工作過程中把一段時間分配給函式
b使用,則函式
b在使用完所有時間之後必須把後面的時間還給函式a。
如果a函式把時間分配給函式
b,則它們之間存在函式呼叫關係。
其中函式a叫做呼叫函式,函式
b叫做被呼叫函式。
函式呼叫關係有時間範圍,只有被呼叫函式工作期間函式呼叫關係才存在。
在程式中使用函式呼叫語句產生呼叫關係。
不可以跨函式使用變數。
不同函式裡的變數可以重名。
如果乙個函式多次執行則每次執行的時候內部變數對應的儲存區有可能不同。
volatile關鍵字可以用來宣告變數,宣告的變數每次拿數的時候都可以得到儲存區里真正的數字。
函式呼叫過程中通常伴隨著兩個函式之間的資料傳遞。
資料傳遞存在兩個完全不同的方向,有可能從呼叫函式向被呼叫函式傳遞,也可能從被呼叫函式傳遞。任何乙個方向的資料傳遞都需要使用被呼叫函式提供的儲存區。
void print(void){
printf(「1\n」);
int main(){
print();
return 0;
只能從被呼叫函式向呼叫函式傳遞乙個資料。
只能在被呼叫函式結束的時候才能傳遞這個資料,這個資料叫被呼叫函式的返回值。
函式的返回值必須記錄在被呼叫函式提供的乙個專門的儲存區里,應該把這個儲存區的型別名稱寫在函式名稱前。
在被呼叫函式裡使用return關鍵字向這個儲存區里放返回值。
呼叫函式直接把函式呼叫語句當作數字使用就可以得到被呼叫函式的返回值。
/* 返回值
#include
int read(void){
int num=0;
printf(「請輸入乙個數字:」);
scanf(「%d」,&num);
return num;
int main(){
printf(「%d\n」,read());
return 0;
如果被呼叫函式裡沒有使用return關鍵字指定返回值則存放返回值的儲存區里的內容是隨機的;這個儲存區不能用來長期存放數字,呼叫函式得到返回值以後或者立刻使用或者轉存到其他儲存區里。
函式名稱前寫void表示函式沒有提供用來存放返回值的儲存區。
如果函式名稱前什麼都沒寫表示函式提供了乙個整數型別儲存區用來存放返回值(c89),在
c99規範裡不允許這樣。
被呼叫函式不能使用陣列存放返回值。
呼叫函式可以一次向被呼叫函式傳遞多個不同型別的資料,被呼叫函式需要提供多個儲存區存放這些資料;可以用一組變數表示儲存區,這組變數必須宣告在函式名稱後面的小括號裡這些變數叫做形式引數,小括號裡的內容統稱為形式引數列表。
形式引數列表是用逗號鏈結的多個變數宣告語句,每個形式引數的型別名稱都不可以省略。
函式呼叫語句裡需要為每個形式引數提供乙個對應的資料,這些資料叫做實際引數。
函式呼叫的時候計算機把實際引數記錄到對應的形式引數裡,被呼叫函式可以從形式引數裡獲得實際引數的數值。
所有能當數字使用的內容都可以當作實際引數使用。
函式名稱後面的小括號裡寫void表示函式不需要從呼叫函式得到任何數字。
如果小括號裡面什麼都沒寫表示函式可以提供任意多個任意型別的形式引數。
C 學習第八天
介面 inte ce c 中介面定義的規則 1 介面本身的預設訪問級別為internal,即程式集本身訪問級別 2 介面中方法不能使用任何訪問修飾符 例如 public private internal protected 等修飾。系統自動為其設定為public 3 不能使用virtual修飾 4 ...
開課第八天
開課第八天,今天因為遲到問題被老師訓了,呵呵,說實話是真的感覺前一周有點懶散鬆懈,今天被訓之後又感覺到了緊迫感,嗯,堅持就是勝利,加油。上午講題,下午講新知識,以下就是本寶寶吸收的新養料 方法 可以被稱作函式,也可以被稱作功能。1 main 是我們學習的第乙個簡單的方法,public static ...
彙編第八天
彙編形式目標 main proc push ebp mov ebp,esp 建立堆疊框架 push offset msg 匯入引數位址 call printf 呼叫函式 xor eax,eax 返回0 pop epb 扯掉框架 ret 0 返回主程式 main endp 結束 1.條件語句 cmp ...