1. 程式人生 > >演算法入門總結(四)—— 引數傳遞

演算法入門總結(四)—— 引數傳遞

函式在演算法競賽中是不可避免的一部分,使用函式必然存在引數傳遞的問題,在C語言中,引數傳遞有傳值、傳地址、傳陣列、傳函式等方式。

傳值

直接在引數表將變數傳入即可,不會改變該變數的值

傳地址

將變數的地址作為引數傳入,在函式宣告時用指標接收,會改變該變數的值

傳輸組

陣列不可直接作為引數傳遞,因為陣列作為引數只是將第一個元素的指標傳入,而陣列大小並不知道,因此傳遞陣列時應將陣列與陣列大小一起傳入。例如:

int sum(int *a, int n) {
    int ans = 0;
    for(int i = 0; i < n; i++) {
        ans += a[i];
    return ans;
}

此處,*a表示 a 是一個地址,因此呼叫時只需將地址傳入即可,故不一定要在 a[0] 開始,如 sum(a+1, 3);

傳函式

使用函式指標