数组名作函数参数 大一

![图片说明](https://img-ask.csdn.net/upload/201612/26/1482758024_546190.jpg)图片说明

在调用average函数的那行,是不是先把score【0】传给average函数?
解释一下此后程序会怎么运行。
array【10】这个数组有什么用

调用那一行是把score数组的首地址传递给了函数,类似于指针的用法,
传递后array这个数组名指向的地址也就是score数组的首地址,即array就是score数组的别称。
这样函数就可以通过array数组来取值,从而进行运算。
由于average函数不能够直接从主函数中调用数组,所以通过array[10]这个形参来调用数组。

运行后是让你输入十个数,然后显示结果。
array[10]就是一数组类型,告诉你这个函数这里的参数是应该是个数组

传递点是数组地址,这样可以根据数组的起始地址遍历到数据后面的各个元素

第一个问题:是;
第二个问题:预处理->主函数->声明函数->分配score、aver、i内存->打印->循环体,为score[i]赋值->打印->调用函数,按照函数里的顺序过一遍,顺带说,这里的形参是值传递方式,遍历->赋值aver->打印->返回0;
第三个问题:作为形参,值传递方式,有时候可以简单理解为类似 temp=a; a=b; b=temp;里的temp,但是有很大不同,自行百度“值传递”。至于叫“array[10]”,其实就算是叫“fuck[10]”、"shit[10]"都可以的,能看懂就行的。

哦,不对,当数组名作为参数时就会产生按引用传递的效果。

首元素的地址就是这个数组的地址,&array[0]的地址和array的地址是一样的。
比如站队,一般老师只会认排头的那个人,会把排头的那个人作为一队的标志。

我挺羡慕你的大一的时候就知道CSDN,那时候我整天想的都是玩,哈哈哈

数组的首地址,array[10]首先作为一个长度为10的数组,在后面就可以看作array ,即array是该数组的首地址

同大一水逼瞎扯几句:
调用average那里将&score[0],也就是score[0]的地址传递过去,你书上都划着那句话了。

前面的声明跟一个提示输入和一个循环用于输入不做赘述,当程序运行到aver = average(score);的时候,先调用函数average();并将socre传递给该函数
函数average利用一个循环将传递过来的数组里的数据求和,然后求的平均数,赋值给average里的aver,然后函数返回aver的值,这个返回的值又被赋值给main里面的aver,最后打印出来
array[10]是一个形式参量,它复制了传递给函数的参数的值,以供函数使用。

额。。。可能我讲的不是很准确还有点乱,通俗点讲就是那些变量名字在一个花括号里面声明,只在这对花括号里可见,比如这里main里面声明的
aver,只有mian的那对花括号里的东西可以看见它,但是函数average里的东西看不见main里面的aver,这也是为什么main跟average里面都有
aver但是并不会直接影响到对方的原因(实际是因为分配了不同的位置的内存),而可能你这里也疑惑传的score是一个数组名,它传递给函数到底传的是什么,忘记书上有没有讲了,就是“数组名是其首元素的地址,视为常量”,意思是说数组名它其实是一个地址来着,你传递score给函数,实际上传递了score[0]的地址给它(也就是 &score[0] ),而有了地址,我们就可以一定程度上直接操作这个地址存的数据的值(除非这个地址的值是常量)。再接着,就是为什么把score给了average,然后array复制了score的值之后,我们可以把array当做score那样用,额,,,除了上述原因外,还就是因为数组它是连续储存的,意思是如果你拿到了数组的首元素的地址,那么剩下的元素的地址你都可以拿到了,因为我们这里可以把array当做score用。。。。

不知道楼主听得懂不。。。

 void fun(int nArr[],int nCount)
{   
    for (int i = 0;i < nCount;i ++)
    {
        cout <<nArr[i]<<endl;
    }   
}

int main()
{
    int nData[] = {0,1,2,3,4,5,6,7,8};

    fun(nData,sizeof(nData) / sizeof(int)); 

    return 0;
}

最好的数组传参还是这样比较安全,明了。。

数组名的值就是数组的首地址,在计算数组中元素的值就是通过这个首地址+数据类型*偏移值而得到的。它和指针的区别在于指针是保存地址的变量,可以赋予不同的地址给指针;而数组名则是一旦数组被定义,首地址则是固定值,不能再改变

复杂?array不是就是主函数传过来的score的地址么,都是一一对应的,
通过子函数修改主函数的参数都要操作指针,so,多花点心思在指针这一块吧!

就是把数组首地址传进去,计算数组的平均值,然后返回