表示C++的内容很多都不记得了 - - 需要重头再细细温习一下。
从例子着手好了。
例子全部选自《C++程序设计 思想与方法》。
【数组作为函数的参数】
一个例子,求成绩平均值:
#include <iostream>
using namespace std;
int average(int array[10]) {
int i, sum = 0;
for(i = 0; i < 10; ++i) {
sum += array[i];
}
return sum / 10;
}
int main() {
int i, score[10];
cout << "请输入10个成绩:";
for (i = 0; i < 10; i++) {
cin >> score[i];
}
cout << "平均成绩是:" << average(score) << endl;
return 0;
}
运行结果如下:
请输入10个成绩:1 2 3 4 5 6 7 8 9 10
平均成绩是:5
Program ended with exit code: 0
注意输入成绩的时候各成绩之间不能用逗号分隔,否则会出错。具体原因不明了,下次了解更深这方面内容的时候再做补充。
数组传递的本质是数组起始地址的传递。
另一个例子,整型数据逆序输出:
#include <iostream>
using namespace std;
#define MAX 10
int ReadIntegerArray(int Array[ ], int max, int flag) {
int size = 0;
cout << "请输入数组元素,以" << flag << "结束:";
while(size < max) {
cin >> Array[size];
if(Array[size] == flag)
break;
else
++size;
}
return size;
}
void ReverseIntegerArray(int Array[ ], int size) {
int i, tmp;
for(i = 0; i < size/2; i++) {
tmp = Array[i];
Array[i] = Array[size-i-1];
Array[size-i-1] = tmp;
}
}
void PrintIntegerArray(int Array[ ], int size) {
int i;
if(size == 0) {
return;
}
cout << "逆序是:" << endl;
for(i = 0; i < size; ++i) {
cout << Array[i] << '\t';
}
cout << endl;
}
int main() {
int IntegerArray[MAX], flag, CurrentSize;
cout << "请输入结束标记:";
cin >> flag;
CurrentSize = ReadIntegerArray(IntegerArray, MAX, flag);
ReverseIntegerArray(IntegerArray, CurrentSize);
PrintIntegerArray(IntegerArray, CurrentSize);
return 0;
}
数组传递的本质是数组起始地址的传递,因此实参传递到形参后调用函数会修改实际数组的值,另外,数组的大小可以不预先定义。