数组基础知识回顾

2018-06-17 23:16:32来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

数组基础知识回顾

一:二维数组初始化(一维数组初始化参照此)

(1)int a[2][4] = {1,2,3,4,5,6,7,8};即将所有元素对应值全部写出。

(2)int a[2][4] = {{1,2,3,4},{5,6,7,8}};分行将其赋值。

(3)int a[2][4] = {{1},{3}};对部分元素进行赋值。

  此时a数组为 1 0 0 0

        3 0 0 0

 

上面简单回顾一下数组在代码中如何初始化,下面介绍一下数组作为函数参数是如何被调用的。

 

实参:可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

形参:全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。

二:数组作为函数参数()

(1)数组元素作为函数实参:将数组元素做函数实参时,把实参值传递给形参,是’值传递‘方式。数据传递方向是从实参传递给形参,单向传递

#include <iostream>
using namespace std;
int max(int x, int y)
{
 return (x<y ? y : x);
}
int main()
{
 int a[5] = { 1, 2, 3, 4, 5 };
 int m = a[0];
 for (int i = 0; i<5; i++)
 {
  if (max(m, a[i])>m)
   m = max(m, a[i]);
 }
 cout << m << endl;
 return 0;
}

 

(2)数组名作为函数实参:用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名作函数实参时,向形参传递的是数组首元素的地址

  例如如下这段代码将a[10]中十个元素的平均值求出并输出在控制台中,使用了数组名作为实参。

  这里将实参数组a[10]的首元素地址(&a[0])传递给形参数组。因此形参获得了实参数组首元素的地址,则形参数组与实参数组具有同一地址,并具有相同的值。

#include <iostream>
using namespace std;

//求均值函数
float average(float a[10][10])
{
 float sum = 0.0;
 float ave = 0.0;
 for (int i = 0; i < 10; i++)
 for (int j = 0; j < 10;j++)
  sum += a[i][j];
 ave = sum / 100.0;
 return ave;
}

//主函数
int main()
{
 float a[10][10] = {22.2,22.44,55.55,44.66};

//不管是一维数组还是二维数组,实参均为数组名,代表&a[0][0]
 float result = average(a);
 cout << result << endl;
 return 0;
}

三:通过指针引用数组元素

  首先,int a[10] = {0}; int *p; p = &a[0];则*p = a[0];这点大家要记住,其它指针引用数组等都是这些简单知识的推广,看看C语言书本即可。

  下面着重讲一下用指针引用多维数组元素这一部分!!!

大家看一下下面两段代码的区别!!!!

int main()                                                                      
{
 int a[2][2] = { 1, 2, 3, 4 };
 int (*p)[2];//这里申明了指针变量P指向包含2个整形元素的一维数组
 p = a;  //这里可以直接赋值,将p指向二维数组的0行
 cout << *(*(p + 1)+1) << endl; //可输出a[i][j]
 return 0;
}

int main()
{
 int a[2][2] = { 1, 2, 3, 4 };
 int *p;   //这里申明的指针变量,指向数组元素
 p = a[0]; //这里必须赋值才能指向二维数组第0行
 cout << *(p + 3) << endl;//其值加一相当于后移一位
 return 0;
}

 

总结:使用一维数组或二维数组做形参时,实参为数组名。

   使用指针:一维数组中使用*p做行参时,实参为array

        二维数组中使用*p做形参时,实参为*array

        二维数组中使用(*p)[3]做形参时,实参为array;

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:微信后台技术“干货们”带来的启发

下一篇:11:潜伏者