黑马程序员技术交流社区

标题: 数组和函数 我晕了 谁来救救我 [打印本页]

作者: 卡哇伊    时间: 2014-7-22 00:51
标题: 数组和函数 我晕了 谁来救救我
  看这个数组与函数视频 我都弄晕了 我要高手 高手 啊

   问题是数组和函数

#include<stdio.h>                                    我不明白的地方有以下几点:
void change(int array[6])                          1,void change(int  array[6])  中括号中的形参为什么不是 int ages[6]???
{
      array[0] = 100;
}


int main()
{
    int ages[6] = {10,12,13,14,15,17};

     change (array);                                       2,调用change(array) 时  会用到void chang函数中的那个变量

return 0;                                                      3,函数运行 是不是 先调用 int ages[6] = {10,12,13,14,15,17}; 从void change(int array[6]) 找方法。
                                                                         然后在调用change (array); 再从void change(int array[6])  找方法。
                                                      //  求大神们 指教 :最好详细点的 这函数把我弄蒙了  到底这函数式怎么运行的 把步骤明确出来 Thanks very much
}

作者: rocki    时间: 2014-7-22 08:36
1、void change(int array[6]) .这里的array是形式参数,它主要是用来接收main函数中传递过来的实参。这个数组的名字不能跟实参的一样。
2、你调用子涵数的的时候应该把实参传递到子函数,而不是用形式参数。也就是ages[6]这个变量。
3、程序开始运行。首先内存开辟空间存储age[6] 然后调用子函数。把age[6里面的值传递给array[],子函数运行完毕后回到主函数继续运行。你写的这个程序应该是有问题的。
你根本没明白什么是形式参数。什么是实行参数。。
作者: 道本真    时间: 2014-7-22 09:01
array这个只是个虚幻的假想体(形参)(其实你取什么名都可以),当你在实际应用时取什么数组名(实参),就用哪个数组名来代替这个array,如当你用age 这个的时候,只要把 array 这个换成age就行了,你一旦要调用那个函数:
1....只需要吧change(int array[6]) ————>改成 change(age[6]) ,这样age[6]这个数组,就会按照你原先定义的change 函数 运行,函数里面的array[0] = 100;——>会自动换成age[0] = 100;(这步是不需要你自己在打码的)
作者: 陆习康    时间: 2014-7-22 10:44
我从头说说吧,函数一开始运行,进入main函数,跑到change(array),发现没有定义array,报错。(先定义吧)
跑到change函数后,因为之前传的实参是array ,而change(什么名字都行),不可能调用age[]的。(要是改成main函数中的change(age[6]),估计差不多(具体没试过,楼主试试看))
作者: 卡哇伊    时间: 2014-7-22 11:59
     的确是高手 昨天看完视频 后发现老师讲解的那的地方 确实 是他写错了 我还纳闷 那个地方我理解错了,原来是他打错了,就是change(array);这个地方应该是change(ages[6]);
   首先要感谢大家对我的解惑,另外麻烦各位 在给我说明一下,什么是形参 和 实参 以上面的函数为例,表明实参和形参 到底是那一个地方 谢谢

作者: fantacyleo    时间: 2014-7-22 12:15
卡哇伊 发表于 2014-7-22 11:59
的确是高手 昨天看完视频 后发现老师讲解的那的地方 确实 是他写错了 我还纳闷 那个地方我理解错了, ...

函数声明处的参数列表里的是形参。调用函数时传入的是实参
作者: 陆习康    时间: 2014-7-23 09:47
卡哇伊 发表于 2014-7-22 11:59
的确是高手 昨天看完视频 后发现老师讲解的那的地方 确实 是他写错了 我还纳闷 那个地方我理解错了, ...

形参:定义函数时函数名后面中的参数。实参:调用函数式传入的具体数据。写个简单点的列子吧。
#include <stdio.h>
int fun(int a)
{

}
作者: 陆习康    时间: 2014-7-23 09:50
卡哇伊 发表于 2014-7-22 11:59
的确是高手 昨天看完视频 后发现老师讲解的那的地方 确实 是他写错了 我还纳闷 那个地方我理解错了, ...

形参:定义函数时函数名后面中的参数。实参:调用函数式传入的具体数据。写个简单点的列子吧。
#include <stdio.h>
int fun(int a) //a是形参,把b的值传到a里面;
{
    printf("%d",a);
    return 0;
}
int main()
{
   int b=12;
   fun(b);//b是实参;
   return 0;//不知道代码写错了没,希望能帮到你;
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2