C語言學習筆記 - 函數

C函數

在C程序中至少有一個函數,即主函數main()

函數聲明告訴編譯器函數的名稱、返回類型和參數。函數定義提供了函數的實際主體。

定義函數

在C語言中,函數由函數頭和函數體組成。主要是返回類型函數名稱參數函數主體幾部分。

template:
return_type function_name( parameter list ) {
   body of the function
}

example:
int add(int num1, int num2) {
    return num1 + num2;
}

聲明函數

template:
return_type function_name( parameter list );

example:
//帶參數名
int add(int num1, int num2);
//不帶參數名
int add(int, int);

調用函數

#include <stdio.h>

int add(int, int);

int main(int argc, const char * argv[]) {
    int sum;
    sum = add(10, 20);
    printf("sum=%d\n", sum);
    return 0;
}

int add(int num1, num2) {
    return num1 + num2;
}

函數參數

  • 傳值調用,即將參數的實際值複製給函數的形式參數。這種情況下,修改函數內的形參不會改變實參。
#include <stdio.h>

void exchange(int, int);

int main(int argc, const char * argv[]) {
    int a = 10, b = 20;
    printf("交換前,a 的值: %d\n", a );
    printf("交換前,b 的值: %d\n", b );

     exchange(a, b);

    printf("交換後,a 的值: %d\n", a );
    printf("交換後,b 的值: %d\n", b );
    return 0;
}

void exchange(int x, int y) {
    int temp = x;
    x = y;
    y = temp;
    return;
}
  • 指針調用,即形式參數爲指向參數實際值的指針,當對形參操作時,對當於對實參本身進行操作。
#include <stdio.h>

void exchange(int *x, int *y);

int main(int argc, const char * argv[]) {
    int a = 10, b = 20;
    printf("交換前,a 的值: %d\n", a );
    printf("交換前,b 的值: %d\n", b );

    exchange(&a, &b);

    printf("交換後,a 的值: %d\n", a );
    printf("交換後,b 的值: %d\n", b );
    return 0;
}

void exchange(int *x, int *y) {
    int temp = *x;
    *x = *y;
    *y = temp;
    return;
}

內部函數

定義函數時,在函數名和函數類型的前面加static, 則此函數是內部函數,又稱作靜態函數,只能在本文件中調用。

static int max(int a,int b);

外部函數

定義函數時,在函數的首部的最左端加關鍵字 extern,則此函數是外部函數,可供其它文件調用。
C語言規定,如果在定義函數時省略 extern,則默認爲外部函數

extern int max(int a, int b);

關於Main函數的參數

對於main()函數,你有可能會看到int main( int argc, char *argv[] ),也有可能看到int main(),那麼main函數到底有沒有參數?

  1. main 函數其實與我們寫的函數沒有什麼區別,它也會有自己的參數。argc 和 argv 是 main 函數的形式參數。
  2. 如果main函數要帶參數,就是argc 和 argv這兩個參數,否則main函數沒有參數。
  3. main函數參數是通過命令行字符串傳遞的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章