C++学习之:数组作为函数参数

    当形参是数组时,实际参数也应该是数组,而且形参和实参数组的类型也要一致。按照值传递的机制,在参数传递时用实际参数的值初始化形式参数,即将作为实际参数的数组的起始地址赋给形式参数的数组名,这样形式参数和实际参数的数组具有同样的起始地址,也就是说形参和实参的数组其实是同一个数组。在函数中对形式参数数组的任何操作实际是对实参数组的修改。故数组传递本质是仅传递了数组的起始地址,并不是将作为实际参数的数组中的每个元素对应传递给形式参数的数组的元素。

    被调函数中如何知道作为实际参数的数组的大小呢?没有任何途径,除非将数组大小作为一个参数同时传递。

总结:1.数组传递实质上传递的是数组起始地址,形参和实参是同一个数组。

          2.在函数中并没有定义新的数组传递一个数组需要两个参数:数组名和数组大小。

          3.形式参数数组不需要指定大小,所以方括号中为空。

          4.C++规定,数组名是数组的起始地址。

如程序:

int main()
{   int score[10];
    cout << "请输入10个成绩:" << endl;
    for (int  i = 0; i < 10; i++)  cin >> score[i];
    cout << "平均成绩是:" << average(score) 
            << endl;
    cout << score[3] << endl; //发现输出的不是80,而是90!
    return 0;
} 

int average(int array[10])
{ 
    int sum = 0;
    for (int  i = 0; i < 10; ++i)  sum += array[i];
    array[3] = 90;
    return sum / 10;
 } 
假如输入数据为:
90 70 60 80 65 89 77 98 60 88
平均成绩是:77



猜你喜欢

转载自blog.csdn.net/wu_qz/article/details/80145153