美文网首页
函数、数组与指针的关系

函数、数组与指针的关系

作者: 奋斗live | 来源:发表于2017-11-12 16:11 被阅读0次

    假设我们要写一个统计数组中所有元素之和的函数,可以如下写法

    total = sum(arr);
    

    以上代码告诉了我们的是,参数arr实际是一个数组的首元素的地址,那么它的对于的数组原型可以如下

    int sum(int * arr);
    

    也可以

    int sum(int arr[]);
    

    总之函数原型如下,都是等价的

    int sum(int * arr);
    int sum(*);
    int sum(int arr[]);
    int sum([]);
    

    但函数定义中不能省略参数名,如下

    int sum(int * arr){
      //省略函数代码
    }
    
    int sum(int arr[]){
      //省略函数代码
    }
    

    再看一个例子

    #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("这个数组总和是%d\n",total);
        printf("这个数组大小是%u\n",sizeof days);//数组每个元素都是int类型,4个int类型,就是16个字节
        return 0;
    }
    int sum(int arr[],int n){
        int i;
        int total = 0;
        for(i=0;i<n;i++){
            total+= arr[i];
        }
        printf("这个arr 是%u字节\n",sizeof arr);//传递的是数组的首地址,int 类型占用的是4字节
        return total;
    }
    

    输出如下


    image.png

    相关文章

      网友评论

          本文标题:函数、数组与指针的关系

          本文链接:https://www.haomeiwen.com/subject/rqxomxtx.html