c++将数组名作为函数参数对数组元素进行相应的运算

   这篇文章主要介绍了c++将数组名作为函数参数对数组元素进行相应的运算,需要的朋友可以参考下

  用数组名做函数参数与用数组元素作实参有几点不同:

  (1)用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的。因此,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。用数组名作函数参数时,则要求形参和相应的实参都必须是类型相同的数组,都必须有明确的数组说明。当形参和实参两者类型不一致时,将会发生错误。

  (2)用普通变量或下标变量作函数参数时,形参变量和实参变量都是由编译系统分配的两个不同的内存单元。在函数调用时进行的值传递是把实参变量的值赋予形参变量。在用数组名做函数参数时,不是进行值的传递,即不是把实参数组的每一个元素的值都赋予形参数组的各个元素。因为实际上形参数组并不存在,编译系统不为形参数组分配内存。因为数组名就是数组的首地址。因此用数组名做函数参数时所进行的传递实际上是地址的传递,也就是把实参数组的首地址赋予形参数组名。形参数组名取得该首地址后,也就等于有了具体的地址。实际上是形参数组和实参数组为同一数组,共同使用一段内存空间。

  代码如下:

  //例:一维数组score,存放10个学生的成绩,求平均值。

  #include

  #include

  #include

  #include

  float average(float array[10])

  { int i;

  float aver,sum=array[0];

  for(i=1; i<10; i++)

  sum=sum+array[i];

  aver=sum/10;

  return aver;

  }

  void main()

  { float score[10],aver;

  int i;

  printf("input 10 score:n");

  for(i=0; i<10; i++)

  scanf("%f",&score[i]);

  printf("n");

  aver=average(score);

  printf("average score is %5.2fn",aver);

  }

  说明:

  (1)用数组名作函数参数,应该在主调函数和被调函数中分别定义数组。

  (2)实参数组与形参数组类型应一致,如不一致,结果将出错。

  (3)实际上,指定被调函数中形参数组的大小是不起任何作用的,因为C编译器对形参数组大小不做检查,只是将形参数组的首地址传给形参数组。

  (4)形参数组也可以不指定大小,定义数组时在数组名后跟一个空的中括号,为了在被调函数中处理数组元素的需要,可以另设一个参数,传递数组元素的个数。

  代码如下:

  #include

  #include

  #include

  #include

  float average(float array[],int n)

  { int i;

  float aver,sum=array[0];

  for(i=1; i

  sum=sum+array[i];

  aver=sum/n;

  return aver;

  }

  void main()

  { float score1[5]= {98.5,97,91.5,60,55};

  float score2[10]= {67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};

  printf("the average of class A is %6.2fn",average(score1,5));

  printf("the average of class B is %6.2fn",average(score2,10));

  }

时间: 2024-08-19 22:11:03

c++将数组名作为函数参数对数组元素进行相应的运算的相关文章

C语言及程序设计提高例程-24 数组名作为函数参数

贺老师教学链接  C语言及程序设计提高 本课讲解 用数组元素作函数实参 #include <stdio.h> int gcd(int m,int n) { int r; while(r=m%n) { m=n; n=r; } return n; } int main() { int i; int a[8]= {26,1007,956,705,574,371,416,517}; int b[8]= {994,631,772,201,262,763,1000,781}; int c[8]; for(

用数组名做函数参数(转)

可以用数组名作函数参数,此时实参与形参都应用数组名(或指针变量). 例2:有一个一维数组score,内放10个学生成绩,求平均成绩. float average(float array[10]){              int i;       float aver,sum=array[0];               for(i=1; i<10; i++)sum=sum+array[i];            aver=sum/10;            return aver; }

C语言中:二维数组能否作为函数参数,如何定义?

问题描述 C语言中:二维数组能否作为函数参数,如何定义? 二维数组能否作为函数的参数进行单独的定义和使用?将?个二维数组的行和列交换,存储到另外一个数组中去,该如何定义函数实现呢? 解决方案 C语言中,数据名做函数的参数后,会退化为指针.没有必要使用指向指针的指针,使用指针就可以了:另外,将是几维数组.和每一维的大小也做为参数传入函数就可以的. 解决方案二: 可以作为函数参数传,但一般不这样做,一般传的是 指向该二维数组的指针~ 解决方案三: 二维数组作为函数参数(C语言)C/C++ 二维数组作

关于java数组定义一个函数清除该数组的重复元素,返回一个不能浪费长度的数组.

问题描述 关于java数组定义一个函数清除该数组的重复元素,返回一个不能浪费长度的数组. package cn.xtgj.testarr; /** 目前有数组" int[] arr = {11,2, 4, 2, 10, 11},定义一个函数清除该数组的重复元素,返回一个不能浪费长度的数组. * */ public class Arr { public void method(int[] arr){ int count=0; for(int i=0;i<arr.length;i++){ fo

调用C++dll,需要传入一个函数指针,函数参数含有数组指针,用于传回数据,怎么老说我访问内存非法呀.

问题描述 C++dll代码回掉函数类型:voidcallback(BYTE*data,intnlen)//DLL设置回调函数voidSetCallBackFunc(CALL_BACK_FUNCcallback){m_callback=callback;}//dll调用回掉函数向C#传回数据voidStartDll(){BYTEbtData[100];for(bytei=0;i<100;i++){btData[i]=i;}m_callback(btData,100);//将数据通过回掉函数传回C#

php str_replace 函数参数为数组时的使用

str_replace 用于字符串替换  代码如下 复制代码 <?php str_replace("php","java","php教程4"); //java教程4 ?> 被搜索的变量是字符串  代码如下 复制代码 <?php /* 被搜索的变量是字符串 */ $array=array(); $array[]='php教程1'; $array[]='php教程2'; $array[]='php教程3'; $array[]='ph

关于数组做函数参数的问题集合汇总_C 语言

首先是数组元素作为函数的实参,这和直接用多个变量作为函数的实参在用法上没有什么差别. 作为例子的代码: 复制代码 代码如下: #include<iostream>using namespace std;int main(){ int max(int a,int b);        int a[2],m;        a[0]=1;        a[1]=2; m=max(a[0],a[1]); cout<<m;   return 0;  }int max(int a,int

C语言中数组名作为参数实现函数传递

用数组名作函数参数与用数组元素作实参有几点不同. 1) 用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的.因此,并不要求函数的形参也是下标变量.换句话说,对数组元素的处理是按普通变量对待的.用数组名作函数参数时,则要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明.当形参和实参二者不一致时,即会发生错误. 2) 在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元.在函

C++中用指向数组的指针作函数参数_C 语言

1.一维数组名作为函数参数传递一位数组名,就相当于该数组的首个元素的地址: 复制代码 代码如下: int a[10];int *p;p=a;//p=a与p=&a[0]是等价的 实例代码: 复制代码 代码如下: #include<iostream>using namespace std;int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10}; void Print(int *p ,int n); Print(a,10); cout<<endl