第十次課----函式
一、函式的定義:包括兩個部分,分別是「函式頭」和「函式體」
返回值型別 函式名(形式引數1, 形參2, ...)//函式頭
//函式體
注意1:函式的返回值和引數可以是任意型別,包括空型別!!
void printfstart(void)//列印一行星號
注意2:函式名是一種識別符號,必須符合識別符號的命名規則!通常用動詞
注意3:函式的引數可以是乙個變數
void sel(int n)//n表示輸入的分數
思考:異常程式存在的缺陷:變數n的值沒有進行異常檢查,改進如下
void sel(int n)//n表示輸入的分數
if (n > 90)
printf("你的成績屬於優秀!");
else if (n > 80)
printf("你的成績屬於良好!");
else if (n > 70)
printf("你的成績屬於中等!");
else if (n > 60)
printf("你的成績屬於及格!");
else
printf("你的成績屬於不及格!");
return;//無意義的return!可以省略 改進如下
}思考上面程式的缺陷:如果成績非法應該返回假(0),正常結束返回真(1)!
void sel(int n)//n表示輸入的分數
if (n > 90)
printf("你的成績屬於優秀!");
else if (n > 80)
printf("你的成績屬於良好!");
else if (n > 70)
printf("你的成績屬於中等!");
else if (n > 60)
printf("你的成績屬於及格!");
else
printf("你的成績屬於不及格!");
return 1;//無意義的return! 改進如下
}通過上面案例說明函式的返回值通常用於返回真或者假,還可以用於返回乙個數
demo:我們做乙個求和的函式 引數:兩個整數,返回乙個整數
int add(int a, int b)
思考以上程式的缺陷,c是多餘的變數定義!!且沒有賦初值,改進如下
int add(int a, int b)
void foo(int a)
int main(void)
總結:1.函式名要符合識別符號命名規則
2.定義時的引數叫形參,個數沒有限制,型別沒有限制
3.返回值的型別沒有限制
3.return 表示式; return語句後面的表示式是可以省略的
如果return後有表示式則返回值型別必須和表示式型別一致
如果return後沒有表示式則用於中斷函式執行
以上函式不呼叫是無法得到執行的!,函式要想被執行必須呼叫之
二、函式的呼叫:
語法 : 函式名(實際引數1,實參2,。。。。)
注意:1 > a函式呼叫b函式,則a函式叫主調函式,b叫被呼叫函式
demo printstar();
2 > 呼叫的引數個數、順序、型別要與定義相同 demo add(1, 2);
3 > 函式呼叫步驟
step1.實參的值賦值給形參
step2.執行函式體
step3.返回主調函式
demo sel(10);
思考:函式名是否和變數名一樣叫「識別符號」?
思考:識別符號是否要先定義後使用?
demo
int main(void)//錯誤,識別符號a要先定義後使用,改進如下
int main(void)
思考:下面程式的錯誤原因
demo
int main(void)
void printstar(void)//識別符號printstar要先定義後使用!
三、函式的宣告:
宣告的方式:只保留函式頭且後面加分號
demo:
void printstar(void);//宣告
int main(void)
void printstar(void)//定義
思考:宣告、呼叫、定義的區別和作用域
函式的定義:包括函式頭和函式體
函式的呼叫:用於執行定義的函式,通常先定義後呼叫
函式的宣告:用於擴充套件函式名稱的作用域,使得可以先宣告後使用!
demo計算器實現加減乘除
思考方式:
step1.分析計算器的功能包括:加減乘除四個功能,因此要寫四個函式
int add(int a, int b)
int sub(int a, int b)
int mul(int a, int b)
int div(int a, int b)
int main(void)
step2.分許用於的使用流程,如先提示顯示選單,提示用於選擇,這個也算乙個功能因此也要寫乙個函式
void menu(void)
step3.顯示選單後要實現使用者的輸入,且使用者非法輸入的話要重新輸入
int main(void)
break;
}return 0;
}step4.選擇正確後,要輸入兩個數,然後計算
int main(void)
break;
}//輸入兩個數
int a = 0, b = 0;
printf("請輸入第乙個數:");
scanf_s("%d", &a);
printf("請輸入第二個數:");
scanf_s("%d", &b);
//計算
switch (n)
return 0;
}思考:
1.加減乘等子函式放到主函式下面可以嗎?然後複習宣告
2.子函式放到其他檔案可以嗎?複習宣告
C語言 函式
1 實參和形參在數量上,型別上,順序上應嚴格一致,否則會發生 型別不匹配 錯誤。2 實參可以是常量,變數,表示式甚至是函式。但是在傳遞給函式前,必須有確定的值。3 形參變數只有在被呼叫時才分配記憶體單元,只有在函式內部有效,函式結束後不能再使用。4 實參和形參佔據不同的儲存單元。5 函式預設採用值傳...
c語言 函式
函式是實現某個功能的 段 函式之間的關係是並列的,不能巢狀 函式的定義 函式的返回值型別 函式名 引數的型別 引數名1.正常的函式有三部分 1.函式的宣告 2.函式的定義 3.函式的呼叫 如果函式在定義之前被呼叫的話,需要對函式提前進行宣告,當然在定義之後在呼叫如果沒有宣告也不會提示錯誤 函式的返回...
C語言函式
和變數 控制流 條件一樣 函式也是現代程式語言的基本組成部分。他可以使我們在應用中重複利用一塊 對於 的組織和維護是很有必要的。您將在ios和os x的框架中發現大量的例子。像其他的基礎元素一樣,object c的函式也是建立在c語言函式之上的。這章我們將介紹c語言最重要的方面,包括基本語法 宣告和...