数组与函数
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一、数组作为函数的参数
计算一个数组中的最大值和最小值
#include <iostream>
using namespace std;
void m(int b[2], int x, int y)
{
b[0] = (x>y)?x:y;
b[1] = (x<y)?x:y;
}
int main()
{
int x, y, a[2];
cin >> x >> y;
m(a, x, y);
cout << "max = " << a[0] << endl;
cout << "min = " << a[1] << endl;
return 0;
}
如果实参使用数组名调用本质上是将这个数组的首地址传递到形参中。
尽管数组数据很多但均从一个首地址连续存放该首地址对应的正是数组名。
二、数组参数的传递机制
数组作为函数的参数传递的是数组的地址。
1由于形参数组就是实参数组所以在被调函数中使用形参就是在间接使用实参这点与变量作为函数参数的情况是不同的。
数组排序
#include <iostream>
using namespace std;
void sort(double a[20], int N)
{
int i, j;
double temp;
for(i=N-1; i>0; i--)
{
for(j=0; j<i; j++)
{
if(a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
int main()
{
double arr[20];
int i, N;
cin >> N;
for(i=0; i<N; i++)
{
cin >> arr[i];
}
sort(arr, N);
for(i=0; i<N; i++)
{
cout << arr[i] << " ";
}
return 0;
}
2既然形参数组就是实参数组所以函数调用时不会为形参数组分配内存空间。
形参数组不过是用数组定义的形式来表明其是个数组能够接收实参传下来的地址形参数组的长度说明也无实际作用。因此形参数组甚至可以不用给出长度。
即上述代码中的void sort(double a[20], int N)可以写成void sort(double a[], int N)
3虽然实参数组将地址传到了被调函数中但被调函数并不知道实参数组的具体长度假定的大小对于实参数组来说容易数组越界因此函数调用时再给出一个参数来表示实参数组的长度。
4多维数组作为函数的参数形参数组的第一维可以与实参相同也可以不同可以是任意长度也可以不写长度但其他维的长度需要相同。