2012年5月25日 星期五

傳入陣列給函數的方法

int SampleFunction(int var1, int var2, ...)
{
    ...
    return result;
}

這是一個簡單的函數架構,函數(函式,Function)就是可以傳入引數(即參數),讓它傳回結果的一段程式碼。
如果沒有回傳值的話,也可以稱作副程式。

如果引數只有二到三個,當然沒有什麼問題;
但是如果你要一次傳入很多引數,甚至是陣列時,要怎麼做呢?

範例一:

#include <stdio.h>
#include <stdlib.h>
int sum(int var[], int b);

int main(void)
{
    int a[]={1, 2, 3, ...};
    printf("%d\n", sum(a, 10));
}

int sum(int var[], int b)  //計算首b個元素的總和
{
    int x=0, i;
    for(i=0; i<b; i++)
    {
        x+=var[i];
    }
    return x;
}

注意:

  1. 函數的引數使用「陣列」時,函數內就使用陣列編寫。
  2. 調用函數時,引數只要寫「陣列名稱」即可。(補充:陣列名稱代表「陣列首個元素的位址」。)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

範例二:


#include <stdio.h>
#include <stdlib.h>
int sum(int* var, int b);

int main(void)
{
    int a[]={1, 2, 3, ...};
    printf("%d\n", sum(a, 10));
}

int sum(int* var, int b)  //計算首b個元素的總和
{
    int x=0, i;
    for(i=0; i<b; i++)
    {
        x+=*(var+i);
    }
    return x;
}

注意:

  1. 函數的引數使用「指標」時,函數內就以指標編寫。
  2. 調用函數時,一樣傳入「陣列首個元素的位址」。

沒有留言:

張貼留言