【知识】数组作为函数参数

1. 可以用 数组元素 作为函数的参数。
2. 可以用 数组名 做函数参数(包括实参和形参)。

!应当注意的是:
(1)用数组元素作为实参时,向形参变量传递的是数组所对应数组元素的值
(2)而用数组名做函数实参时,向形参(数组名或指针变量)传递的是数组首元素的地址。

#include<stdio.h>
int main(){
    //声明函数和变量
    float average(float array[10]);
    float score[10],aver;
    int i;

    //填充数组元素
    printf("please enter 10 scores:");
    for(i=0;i<10;i++)
        scanf("%f",&score[i]);
    printf("\n");

    aver = average(score);   //注意这里调用函数时,向形参传递的是数组首元素的地址
    printf("average score is %5.2f\n ",aver);

    return 0;
}

float average(float array[10])
//相当于初始化 float array[10] = score;  将score数组的首地址交给有10个元素的array数组
{
    int i;
    float aver,sum = 0;

    for(i=0;i<10;i++)
        sum = sum + array[i];
    aver = sum / 10;

    return(aver);
}

数组元素对调函数

一、参数是数组

#include<stdio.h>
int main(){
    void change(int x[],int n);//n表示数组元素个数
    int i,a[10] = {3,7,9,11,0,6,7,5,4,2};

    printf("the original array:\n");
    for(i=0;i<10;i++)
        printf("%d\t",a[i]);
    printf("\n");


    change(a,10);    
    
    
    printf("the array has been inverted:\n");
    for(i=0;i<10;i++)
        printf("%d\t",a[i]);

    return 0;
}

void change(int x[],int n)
//int x[] = a;
{   
    int temp,i,j,m=(n-1)/2;

    for(i=0;i<=m;i++){
        j = n - 1 - i;
        temp = x[i];
        x[i] = x[j];
        x[j] = temp;
    }
}

 二、参数是指针

#include<stdio.h>
int main(){
    void change(int *x,int n);
    int i,a[10] = {3,7,9,11,0,6,7,5,4,2};

    printf("the original array:\n");
    for(i=0;i<10;i++)
        printf("%d\t",a[i]);
    printf("\n");

    change(a,10);

    printf("the array has been inverted:\n");
    for(i=0;i<10;i++)
        printf("%d\t",a[i]);

   return 0;
}

void change(int *x,int n){
    int *p,temp,*i,*j,m = (n-1) / 2;

    i=x;j=x+n-1;p=x+m;
    for(;i<=p;i++,j--)
    {
        temp = *i;
        *i = *j;
        *j = temp;
    }
}

汇总比较

int main(){
    int a[10],*p=a;
    .
    f(p,10);
    .
}

void f(int *x,int n){
  .
 }




int main(){
    int a[10],*p=a;
    .
    f(p,10);
}

void f(int x[],int n){
  .
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值