假設(shè)我們要寫一個(gè)統(tǒng)計(jì)數(shù)組中所有元素之和的函數(shù)备籽,可以如下寫法
total = sum(arr);
以上代碼告訴了我們的是舶治,參數(shù)arr實(shí)際是一個(gè)數(shù)組的首元素的地址,那么它的對(duì)于的數(shù)組原型可以如下
int sum(int * arr);
也可以
int sum(int arr[]);
總之函數(shù)原型如下车猬,都是等價(jià)的
int sum(int * arr);
int sum(*);
int sum(int arr[]);
int sum([]);
但函數(shù)定義中不能省略參數(shù)名霉猛,如下
int sum(int * arr){
//省略函數(shù)代碼
}
int sum(int arr[]){
//省略函數(shù)代碼
}
再看一個(gè)例子
#include<stdio.h>
#define SIZE 4
int sum(int arr[],int n);
int main(){
int days[SIZE] = {10,20,30,40};
long total;
total = sum(days,SIZE);
printf("這個(gè)數(shù)組總和是%d\n",total);
printf("這個(gè)數(shù)組大小是%u\n",sizeof days);//數(shù)組每個(gè)元素都是int類型,4個(gè)int類型珠闰,就是16個(gè)字節(jié)
return 0;
}
int sum(int arr[],int n){
int i;
int total = 0;
for(i=0;i<n;i++){
total+= arr[i];
}
printf("這個(gè)arr 是%u字節(jié)\n",sizeof arr);//傳遞的是數(shù)組的首地址,int 類型占用的是4字節(jié)
return total;
}
輸出如下