码迷,mamicode.com
首页 > 其他好文 > 详细

函数的值传递

时间:2014-10-25 14:25:06      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   for   div   log   as   tt   程序   

三个同学,四门科目,分别给出他们四门科目的成绩,用函数求出他们每一个同学的总成绩,即函数的返回值必须是三个。

这道题目用函数来实现的话,一定要注意在函数体里面申请的空间在函数执行完之后就会被释放,注意局部变量的生命周期。

01

#include<stdio.h>
void  aver(int a[3][4],int b[3])
{
	int i,j;
	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
		{
			b[i]+=a[i][j];

		}
	}

}
void main()
{
	int a[3][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6}};
	int b[3]={0,0,0};
	int *q,i;
	q=b;
	aver(a,b);
	for(i=0;i<3;i++)
	{
		printf("%d\n",*(b+i));
	}

}

  02

定义在函数中的一维数组会退化成一个指针,二维数组会退化成一个一个指向一维数组的指针,所以将程序做下面这样微小的改动也是可以的。

#include<stdio.h>
void  aver(int (*a)[4],int *b) //数组的退化
{
	int i,j;
	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
		{
			b[i]+=a[i][j];

		}
	}

}
void main()
{
	int a[3][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6}};
	int b[3]={0,0,0};
	int *q,i;
	q=b;
	aver(a,b);
	for(i=0;i<3;i++)
	{
		printf("%d\n",*(b+i));
	}

}

  则可以得到

数组做为形参时,退化为指针

三维数组,退化为指向二维数组的指针

二维数组,退化为指向一维数组的指针

一维数组,退化为指向类型(如int)的指针

函数的值传递

标签:blog   io   ar   for   div   log   as   tt   程序   

原文地址:http://www.cnblogs.com/wuyuewoniu/p/4050025.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!