C语言数组,函数,指针

编写处理数组的函数,使用指针作为形参,可以采用以下方式。

方式一

数组名是该数组元素的首地址,所以可以传递数组名作为首地址,但仅有一个参数并不够,需要知道数组的长度,所以需要将数组长度作为第二个参数。

#include<stdio.h>
#define SIZE 10
int sum(int * ar, int n);
int main(void){
    int arr[SIZE] = {20,10,5,39,4,16,19,26,31,20};
    long answer;
    answer = sum(arr, SIZE);
    printf("The totle number of marbles is %ld.\n",answer);	
    return 0;
}
int sum(int *ar,int n){
    int i;
    int total = 0;
    for(i=0;i<n;i++){
        total += ar[i];
    }
    return total;
}

int sum(int *ar,int n)中,int * ar是指针变量,int n表示数组的长度。answer = sum(arr, SIZE),arr表示数组首地址,SIZE为数组的长度。

方式二

明确数组的开始位置与结束位置,分别将开始地址和结束地址作为形参。

#include<stdio.h>
#define SIZE 10
int sum(int * start, int * end);
int main(void){
    int arr[] = {20,10,5,39,4,16,19,26,31,20};
    long answer;
    answer = sum(arr, arr+SIZE);
    printf("The total number of marbles is %ld.\n",answer);	
    return 0;
}
int sum(int * start, int * end){
    int total = 0;
    while(start < end){
        total += *start;
        start++;
    }
    return total;
}

int sum(int * start, int * end),int * start表示数组开始地址,int * end表示数组结束地址。answer = sum(arr, arr+SIZE),调用时实参arr表示数组的开始地址,SIZE是数组的大小,arr+SIZE指向数组末尾的下一个位置。

总结,

C语言中编写数组处理函数,使用指针作为形参有一下方式:

(1)使用数组的首地址,数组长度作为形参

(2)使用数组的首地址,数组结束地址作为形参

举报
评论 0