C語言學習筆記 初識函式
阿新 • • 發佈:2020-07-19
1. 函式定義:
2. 函式返回:
從函式中返回return停止函式的執行,並返回一個值。 return;或return 表示式 ; 沒有返回值的函式 void 函式名(引數表)
3. 函式原型:
#include <stdio.h> void sum(int begen, int end);//宣告 int main() { sum(1, 10); return 0; } void sum(int begen, int end)//定義 { //函式體; }
4. 引數傳遞
型別不匹配。呼叫函式時給的值與引數的型別不匹配時,C語言編譯器總是偷偷地替你把型別轉換好,但是這可能不是你所期望的,
後續的語言,C++和Java在這方面很嚴格。
void cheer(int i) { printf("cheer %d", i); } int main() { cheer(2.4); return 0; } //warning C4244: “函式”: 從“double”轉換到“int”,可能丟失資料 //cheer 2
傳值:
void swap(int a, int b); int main() { int a = 1, b = 2; swap(a, b); printf("a=%d, b=%d", a, b); return 0; } void swap(int a, int b) { int t = a; a = b; b = t; }
//a=1, b=2
這樣的程式碼無法交換a和b的值,C語言在呼叫函式時,永遠只能傳值給函式。
5. 本地變數
定義:定義在函式內部的變數就叫本地變數,又稱區域性變數。引數也是本地變數。
變數的生存期:什麼時候變數開始出現了,到什麼時候變數又消亡了。
變數的作用域:在程式碼的什麼範圍內可以訪問這個變數(這個變數可以起作用)。
對於本地變數這兩個問題的答案是統一的:大括號內-------塊
本地變數的規則:
- 本地變數是定義在塊內的,它可以定義在函式的塊內、語句的塊內,甚至可以隨便拉一個大括號來定義變數。
- 程式執行進入這個塊之前,其中的變數不存在,離開這個塊,其中的變數就消失了。
- 塊外面定義的變數在塊裡面仍然有效。
- 塊裡面定義了了外面同名的變數則掩蓋了外面的。
- 不能在一個塊內定義同名的變數。
- 本地變數不會被預設初始化。
- 引數在進入函式的時候被初始化了。
6. 一些細節
沒有引數時
void f(),在傳統C中,它表示f函式的引數表未知,並不表示沒有引數。
void f(void)
在函式原型中有引數時,最好標明。
逗號運算子?
呼叫函式時的圓括號裡的逗號是標點符號,不是運算子。
f(a,b)與f((a,b))的區別是傳入的引數是一個還是兩個。
C語言不允許函式巢狀定義