2022/11/16 一维数组名与多维数组名作为函数参数

现有一维数组score,存放10个人的分数,计算平均值

#include<stdio.h>
float aver(float arr[10]);//实参数组和形参数组类型一致
int main()
{
	float score[10];
	int i;
	float average;
	printf("enter 10 new numbers:\n");
	for (i = 0; i < 10; i++)
		scanf_s("%f", &score[i]);
	average = aver(score);
	printf("the average is %5.2f", average);
	return 0;

}
float aver(float arr[10])//形参数组可以不指定大小
{
	int j;
		float aver1,sum=0;
	for (j = 0; j < 10; j++)
	{
		sum += arr[j];
	}
	aver1 = sum / 10;
	return aver1;

}

现有两个班级,利用函数分别求平均分

可以在形参中加一个i,来控制循环的此数

#include<stdio.h>
float aver(float arr[10],int n);
int main()
{
	float score1[10]={1,2,3,4,5,6,7,8,9,10};
	float score2[5]={2, 4, 6, 8, 15};
	int i;
	printf("the score1 average is %5.2f", aver(score1, 10));//用数组名
	printf("the score2 average is %5.2f", aver(score2, 5));//用数组名
	return 0;

}
float aver(float arr[10],int n)
{
	int j;
	float sum=0, aver1;
	for (j = 0; j < n; j++)
	{
		sum += arr[j];
	}
	aver1 = sum / n;
	return aver1;

}

总结:用数组名作为函数参数时,不是数组元素的值传递给形参,而是把实参数组首元素的地址传递给形参数组,两个共同占用一段内存空间

a[0]与b[0]共用,a[1]与b[1]共用

多维数组名

现有一个3*4的矩阵,求出其中的最大值

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

在对源程序编译时,编译系统把形参数组处理为指针变量(例如把float array[]转换为float * array),该指针变量用来接收从实参数组传过来的地址。C语言允许用指针变量(如 float * array)或数组(如float array[])作为形参,二者是等价的。对数组元素的访问,用下标法和指针法也是完全等价的。用形参数组是为了便于理解,形参数组与实参数组各元素一一对应,比较形象好懂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值