1. 程式人生 > 實用技巧 >C語言學習筆記 初識函式

C語言學習筆記 初識函式

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. 本地變數

定義:定義在函式內部的變數就叫本地變數,又稱區域性變數。引數也是本地變數。

變數的生存期:什麼時候變數開始出現了,到什麼時候變數又消亡了。

變數的作用域:在程式碼的什麼範圍內可以訪問這個變數(這個變數可以起作用)。

對於本地變數這兩個問題的答案是統一的:大括號內-------塊

本地變數的規則:

  1. 本地變數是定義在塊內的,它可以定義在函式的塊內、語句的塊內,甚至可以隨便拉一個大括號來定義變數。
  2. 程式執行進入這個塊之前,其中的變數不存在,離開這個塊,其中的變數就消失了。
  3. 塊外面定義的變數在塊裡面仍然有效。
  4. 塊裡面定義了了外面同名的變數則掩蓋了外面的。
  5. 不能在一個塊內定義同名的變數。
  6. 本地變數不會被預設初始化。
  7. 引數在進入函式的時候被初始化了。

6. 一些細節

沒有引數時

void f(),在傳統C中,它表示f函式的引數表未知,並不表示沒有引數。

void f(void)

在函式原型中有引數時,最好標明。

逗號運算子

呼叫函式時的圓括號裡的逗號是標點符號,不是運算子。

f(a,b)與f((a,b))的區別是傳入的引數是一個還是兩個。

C語言不允許函式巢狀定義