zoukankan      html  css  js  c++  java
  • 函数的值传递

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

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

    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
    ",*(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
    ",*(b+i));
    	}
    
    }
    

      则可以得到

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

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

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

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

  • 相关阅读:
    Qt 交换Layout中的QWidget控件位置
    霍夫变换(Hough)
    图像傅里叶变换
    通俗讲解:图像傅里叶变换
    傅里叶分析之掐死教程(完整版)
    一幅图弄清DFT与DTFT,DFS的关系
    Qt 实现简单的TCP通信
    Qt 基于TCP的Socket编程
    Socket原理讲解
    科研相机选择:sCMOS还是CCD?
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4050025.html
Copyright © 2011-2022 走看看