C 数组作为函数参数


  1、数组作为函数参数——数组可以作为实际参数传递给函数的形参。

 

 

 

  2、例子:

      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

      

    通过,这个例子,相信大家就可以了解到,使用数组元素作为参数与使用变量作为参数是类似的。接下来,我们就要直接使用数组名作为参数,再作一个详细分析,看看又有什么不同。

 

 

 

  3、例子:

      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编译时不对形参数组的大小做检测,只将实参数组的首地址传递给形参。

       

 

 

   4、例子:

      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)形参中的二维数组定义的第一维可以不指定大小,但第二维必须指定大小。

       

 

 

   非常好,现在,我们已经掌握了C中的“数组作为函数参数”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用“数组作为函数参数”去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”

 

   不要停留在理论规则上面,快动起来吧!

 

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练