zoukankan      html  css  js  c++  java
  • 数组名做函数的参数

    数组名作函数的参数,必须遵循以下原则:
    (1)如果形参是数组形式,则实参必须是实际的数组名,如果实参是数组名,则形参可以是同样维数的数组名或指针。
    (2)要在主调函数和被调函数中分别定义数组。
    (3)实参数组和形参数组必须类型相同,形参数组可以不指明长度。
    (4)在C语言中,数组名除作为变量的标识符之外,数组名还代表了该数组在内存中的起始地址,因此,当数组名作函数参数时,实参与形参之间不是"值传递",而是"地址传递",实参数组名将该数组的起始地址传递给形参数组,两个数组共享一段内存单元,编译系统不再为形参数组分配存储单元。
    例9-15:分析程序的执行过程。
    #include <stdio.h>
    func6 ( char str[ ] )
    { printf ("%s",str);
    }
    main( )
    { char a[10]= "Turbo C";
    func6(a); /* 数组名做函数的实参 */
    }
    内存空间存储状态如9-5图所示。

    调用时,实参数组将首地址a 赋值给形参数组str,两个数组共同占用相同的内存单元,共享数组中的数据,a[0]与str[0]代表同一个元素,a[1]与str[1]代表同一个元素。因此,当数组名做函数参数时,形参数组的长度与实参数组的长度可以不相同,当形参数组长度小与实参数组长度时,形参数组只取部分实参数组中的数据,实参中的其余部分可以不起作用,形参数组也可以不指明长度。


    多维数组做函数的参数
    当多维数组中元素做函数参数时,与一维数组元素做函数实参是相同的,这里讨论多维数组名做函数的参数。以二维数组为例:
    二维数组名做函数参数时,形参的语法形式是:
    类型说明符 形参名[ ][常量表达式M]
    形参数组可以省略一维的长度。
    例如:int array[ ][10]
    由于实参代表了数组名,是"地址传递",二维数组在内存中是按行优先存储,并不真正区分行与列,在形参中,就必须指明列的个数,才能保证实参数组与形参数组中的数据一一对应,因此,形参数组中第二维的长度是不能省略的。
    调用函数时,与形参数组相对应的实参数组必须也是一个二维数组,而且它的第二维的长度与形参数组的第二维的长度必须相等。

  • 相关阅读:
    设计模式之策略模式
    UML类图几种关系的总结
    LinuxMint下安装使用Umbrello(UML工具)
    Linux环境变量
    随笔
    Unity Animation Scripting zz
    FSM:游戏开发中的有限状态机(理论篇)转
    统计帧率的几种方法
    图形学 游戏 学习链接汇总
    福尔摩斯女友
  • 原文地址:https://www.cnblogs.com/viviwind/p/2642535.html
Copyright © 2011-2022 走看看