C语言 数组作为参数

  1、 数组作为参数

    当数组作为参数时,形式参数与实际参数都指向同一个地址,所以,当函数中的形式参数里面的内容发生了变化,

    就会影响到函数外的实际参数的内容也一起发生变化。

    简单来说,当形式参数是数组时,函数调用完毕后,数组中的内容会保存下来。    

=======================================================================

 

   2、例子:

      void mx(int x[2])

      {

        x[0]=x[1]+1;

      }

      void main()

      {

        int a[2]={1,2};

        mx(a);

      }

 

     例子分析:

      (1)通过上面的例子,我们首先在mx函数中定义了1个数组x作为形式参数。

      (2)然后,在main函数中,调用mx函数时,我们就将数组a作为实参传递给mx函数中的形参x

      (3)然后,在mx函数中,形参x通过下标1取出数组中的元素2,然后加上1结果等3,

         再赋值给数组x下标为0的元素,所以,下标为0的元素就从1变为3。

      (4)当mx函数调用完毕以后,实参数组a中的内容发生了变,数组a中第1个元素由1变成了3。

 

     重点分析:

      (1)为什么实参数组a中的内容会发生变化?

         原因是这样的,因为,当我们使用数组名作为实参时,

         它是将实参数组的在内存中起始地址传递给形参数组,

         所以,形参数组与实参数指向同一个内存存储位置

         这样,当形参中的内容改变时,就会直接影响到实参的内容,

         所以,这种情况的参数传递与(变量或数组元素的传递)是不一样的

      (2)使用数组名作为参数传递时,实参数的类型与形参的类型必须一致。

      (3)使用数组名作为参数传递时,形参与实参都必须被定义为数组。

      (4)使用数组名作为参数传递时,形参的数组大小可以不指定,即数组名后跟一对空的中括号,即int a[ ],

         因为C编译时不对形参数组的大小做检测,只将实参数组的首地址传递给形参。

=======================================================================

 

  3、例子:

     void mx(int x[ ][ 2 ])

      {

        x[0][1]=x[1][1]+1;

      }

      void main()

      {

        int a[2][2]={ {1,2},{3,4} };

        mx(a);

      }

 

      例子分析:

      (1)通过上面的例子,我们首先在mx函数中定义了1个二维数组x作为形式参数

      (2)然后,在main函数中,调用mx函数时,我们就将二维数组a作为实参传递给mx函数中的形参x

      (3)然后,在mx函数中,形参x通过行下标1与列下标1,取出数组中第2行,第2列的元素4,

         然后加上1结果等5,再赋值给数组x行下标为0,列下标为1的元素2,

         所以,第1行第2列的元素就从2变为5。

      (4)当mx函数调用完毕以后,实参数组a中的内容发生了变,数组a中第1列,第2列的元素由2变为了5。

 

      重点分析:

      (1)二维数组作为实参传递与一维数组是类拟的。

      (2)形参中的二维数组定义的第一维可以不指定大小,但第二维必须指定大小。

 

=======================================================================

 

   4、数组元素作为参数

    例子:

     void mx(int x,float y)

      {

        x=x+1;

        y=y-1;

      }

      void main()

      {

        int a[2]={1,2};

        float b[2]={1.5,2.5};

        mx(a[1],b[0]);

      }

 

  例子分析:

   (1)通过上面的例子,我们首先在main函数中定义了两个数组,分别是整型数组a和浮点数组b。

   (2)然后,在mx函数被调用时,我们取出了数组a中下标为1的元素“2”作为第1个参数传递给mx函数的形式参数x,

      然后,再取出数组b中下标为0的元素“1.5”作为第2个参数传递给mx函数形式参数y。

      

    通过,这个例子,相信大家就可以了解到,使用数组元素作为参数与使用变量作为参数是类似的。

 

=======================================================================

 

非常好,现在,我们已经掌握了C语言中的(数组作为参数)但是,如何去运行用它呢?

所以,我们就需要通过下方的链接,进入到C语言的代码训练中,然后,通过实践去加深对该知识点的理解与运用。

>>>下载训练环境与使用说明(使用真实的开发环境,结合游戏闯关进行 编程训练)