next up previous contents
Next: 實機練習題 Up: 陣列 Previous: 字串處理函式   Contents   DYWANG_HOME

傳送一維陣列至函式

  1. call by reference 傳送變數位址給函式,傳送陣列給函式也是傳送陣列的起始位置給函式,所以經函式處理後,陣列中的值會跟著改變。傳送方法有三種:
    1. 方法一:傳送第一個陣列的位址指標。
      void myFunction(int *param) {
      ....
      }
      
    2. 方法二:傳送已宣告大小的陣列。
      void myFunction(int param[10]) {
      ....
      }
      
    3. 方法三:傳送未宣告大小的陣列。
      void myFunction(int param[]) {
      ....
      }
      
  2. 範例:傳入一維陣列位址,並傳送陣列大小 size。
    [dywang@dyw219 zzz]$ vim array5.c
    [dywang@dyw219 zzz]$ cat array5.c
    #include <stdio.h>
    #include <stdarg.h>
    
    float average(int num[], int size) {
    	float sum = 0.0;
    	int i;
    	for ( i=0; i<size; i++) {
    		sum += num[i];
    	}
    
    	return sum/size;
    }
    
    main() {
    	int num[]={5, 3, 4, 65, 11, 39};	
    
    	printf("average(5,3,4,65,11,39)=%5.2f\n", average(num, 6));
    }
    
  3. 編譯
    [dywang@dyw219 zzz]$ gcc -o array5 array5.c
    
  4. 執行結果
    [dywang@dyw219 zzz]$ ./array5
    average(5,3,4,65,11,39)=21.17
    



De-Yu Wang 2021-01-11