首 页软件驱动源码手机动漫资讯百科育儿字典英语图库壁纸
您当前的位置:泽泽网资讯编程开发C语言 → 文章信息

C语言数组作为参数的工作原理


        数组可以作为函数的参数来传递信息。如:

#include <stdio.h>
#define N 5
void sort(float a[N])
{
 int i,j;
 float temp;
 for(i=0;i<N;i++)
 {
  for(j=0;j<N-i-1;j++)
  {
   if(a[j] > a[j+1])
   {
    temp = a[j+1];
       a[j+1] = a[j];
       a[j] = temp;
  }
  }
 }
}
void main()
{
 float grade[N];
 int i;
 printf("\n 输入 %d 个学员的成绩: \n",N);
 for(i=0;i<N;i++)
 {
  scanf("%f",&grade[i]);
 }
 sort(grade);
 printf("\n 排序后的成绩为: \n");
 for (i=0;i<N;i++)
 {
  printf("%5.2f ",grade[i]);
 }
 printf("\n");
}

分析:在示例中,main()函数中声明了一个浮点型数组grade,用来保存学员的成绩。首先录入学员的成绩,存储在数组grade中。然后调用排序函数sort,将数组名grade作为函数的实参传递给sort函数的形参数组a。在sort函数中,对数组a的元素排序。调用函数后,打印数组grade的元素。由输出结果可以看出,数组grade中的元素也成为有序的了。排序函数中修改形参数组a的内容,为什么会影响到实参数组元素的值呢?实际上,在用数组用实参时,不是进行值的传递,即不是把实参数组的每一个元素的值都依次赋给形参数组各元素。那么,数据的传送是如何实现的呢?数组名就是数组的首地址。因此在数组名取得该首地址之后,也就等于有了实在的数组。实际上形参数组和实参数组为同一数组,共同拥有一段内存空间所以示例中在被调用函数中,改变数组a的元素值,数组grade的元素值也随之改变。

另外形参数组和实参数组的长度可以不相同,因为在调用时,只传送首地址而不检查形参数组的长度。当形参数组的长度与实参数组不一致时,虽然不出现语法错误(编译能通过),但是程序执行结果将与实际不符。

精品推荐
最新文章
站内搜索:


Copyright © 2003-2008 zzgwu.com. All Rights Reserved .
《中华人民共和国信息产业部ICP证备案》:桂ICP备 06003915号
QQ:474302153