C语言中数组名作为参数进行函数传递 您所在的位置:网站首页 数组作为参数传递的效果 C语言中数组名作为参数进行函数传递

C语言中数组名作为参数进行函数传递

2024-03-08 02:05| 来源: 网络整理| 查看: 265

C语言中数组名作为参数进行函数传递

原文链接:http://www.cnblogs.com/DarrenChan/p/5778318.html

在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值传送是把实参变量的值赋予形参变量。在用数组名作函数参数时,不是进行值的传送,即不是把实参数组的每一个元素的值都赋予形参数组的各个元素。因为实际上形参数组并不存在,编译系统不为形参数组分配内存。那么,数据的传送是如何实现的呢?在我们曾介绍过,数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送,也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。因此当形参数组发生变化时,实参数组也随之变化。

图片1

上图说明了这种情形。图中设a为实参数组,类型为整型。a占有以2000为首地址的一块内存区。b为形参数组名。当发生函数调用时,进行地址传送,把实参数组a的首地址传送给形参数组名b,于是b也取得该地址2000。于是a,b两数组共同占有以2000为首地址的一段连续内存单元。从图中还可以看出a和b下标相同的元素实际上也占相同的两个内存单元(整型数组每个元素占二字节)。例如a[0]和b[0]都占用2000和2001单元,当然a[0]等于b[0]。类推则有a[i]等于b[i]。 多维数组也可以作为函数的参数。在函数定义时对形参数组可以指定每一维的长度,也可省去第一维的长度。因此,以下写法都是合法的: int MA(int a[3][10]);或int MA(int a[][10]);

下面给出两个将数组传递进函数的例子: ex1:

//求5名学生的平均成绩 #include float aver(float a[5]) //此处函数的定义中数组的元素个数可以省略,由传入的数组决定 { int i; float av,s=a[0]; for(i=1;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有