正文

C++ 入门 第5章5.4 用数组名作函数参数2008-09-19 10:22:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yzrj/38362.html

分享到:

 

常量和变量可以用作函数实参,同样数组元素也可以作函数实参,其用法与变量相同。数组名也可以作实参和形参,传递的是数组的起始地址。
1. 用数组元素作函数实参
由于实参可以是表达式,而数组元素可以是表达式的组成部分,因此数组元素当然可以作为函数的实参,与用变量作实参一样,将数组元素的值传送给形参变量。
 
5.6 用函数处理例5.5
算法和例5.5是一样的,今设一函数max_value,用来进行比较并返回结果。可编写程序如下:
#include <iostream>
using namespace std;
int main( )
{ int max_value(int x,int max);                //函数声明
   int i,j,row=0,colum=0,max
   int a3][4={{5,12,23,56},{19,28,37,46},{-12,-34,6,8}};  //数组初始化
      max=a0][0;
   for (i=0;i<=2;i++)
     for (j=0;j<=3;j++)
{ max=max_value(ai][j,max);          //调用max_value函数
if(max==ai][j)                     //如果函数返回的是ai][j]的值
{row=i;                            //记下该元素行号i
 
colum=j;                          //记下该元素列号j
      }
}
   cout<<max=<<max<<,row=<<row<<,colum=<<colum<<endl;
  }
int max_value(int x,int max)         //定义max_value函数
{if(x>max) return x;               //如果x>max,函数返回值为x
else return max;                  //如果xmax,函数返回值为max
  }
 
2. 用数组名作函数参数
可以用数组名作函数参数,此时实参与形参都用数组名(也可以用指针变量,见第6章)。
5.7 用选择法对数组中10个整数按由小到大排序。
所谓选择法就是先将10个数中最小的数与a0]对换;再将a1]到a9]中最小的数与a1]对换……比较一轮,找出一个未经排序的数中最小的一个。共比9轮。
根据此思路编写程序如下:
#include <iostream>
using namespace std;
int main( )
{void select_sort(int array[],int n);             //函数声明
 int a10,i;
 cout<<enter the originl array:″<<endl;
 
for(i=0;i<10;i++)                                //输入10个数
   cin>>ai;
 cout<<endl;
 select_sort(a,10);                              //函数调用,数组名作实参
 cout<<the sorted array:″<<endl;
 for(i=0;i<10;i++)                               //输出10个已排好序的数
   cout<<ai<<  ;
 cout<<endl;
 return 0;
}
void select_sort(int array[],int n)              //形参array是数组名
{int i,j,k,t;
 for(i=0;i<n-1;i++)
{k=i;
     for(j=i+1;j<n;j++)                   
       if(arrayj<arrayk) k=j;
 t=arrayk;arrayk=arrayi;arrayi=t;
}
}
 
运行情况如下:
enter the originl array
6 9 -2 56 87 11 -54 3 0 77                 //输入10个数
the sorted array
-54 -2 0 3 6 9 11 56 77 87
关于用数组名作函数参数有两点要说明:
(1) 如果函数实参是数组名,形参也应为数组名(或指针变量,关于指针见第5),形参不能声明为普通变量(int array;)。实参数组与形参数组类型应一致(现都int型),如不一致,结果将出错。
(2) 需要特别说明的是: 数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。
 
形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元。见图5.6

阅读(3055) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册