数组元素的值做实参

数组元素作为实参时,将数组元素的值传递给形参,传递的方向是从实参向形参的单向值传递。

例:编写函数求一维数组的最大值。

#include<stdio.h>
int main(){
    int max(int a,int b);
    int a[]={2,5,12,78,3,5,78,34,10,9};
    int m=a[0];
    for(int i=0;i<=9;i++){
        if(max(m,a[i])>m)m=a[i];}
    printf("max=%d",m);
    return 0; 
}
int max(int a,int b){
    return a>b?a:b;
}

数组名称做形参

当数组作为形参时,虽然形式上还是数组,比如void sort(int arr[ ]),但是并不意味着真正建立了一个包含和实参数组大小相同的数组,在调用函数时也不对它分配存储单元,只是用array[ ]这样的数组形式表示array是一维数组名,来接收实参传来的地址,因此array中的方括号的数值并无实际作用,编译器对数组维度进行忽略。

例:

#include<stdio.h>
int main(){
    void fun(int a[]);
    int a[]={1,2,3,4,5,6,7,8,9,10};
    fun(a);
    for(int i=0;i<=9;i++){
        printf("%3d",a[i]); 
    }
    return 0;
}
void fun(int a[]){
    for(int i=0;i<=9;i++)
    a[i]=a[i]+10; 
}

普通的传递过程

数组名称做形参的传递过程

注意

  • 用数组元素做实参时,向形参变量传递的是数组元素的值
  • 用数组名做函数实参时,向形参传递的是数组首元素的地址。
  • 数组名作为函数实参传递时,函数定义处作为接收参数的数组类型形参既可以指定长度也可以不指定长度。
  • 数组元素作为函数实参传递时,数组元素类型必须与形参数据类型一致
最后修改:2021 年 04 月 01 日 08 : 27 PM
除非注明本站内容皆为岳泽以原创转载请保留出处