首页 > 代码库 > 函数的值传递
函数的值传递
三个同学,四门科目,分别给出他们四门科目的成绩,用函数求出他们每一个同学的总成绩,即函数的返回值必须是三个。
这道题目用函数来实现的话,一定要注意在函数体里面申请的空间在函数执行完之后就会被释放,注意局部变量的生命周期。
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)的指针
函数的值传递
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。