C语言中不能向函数传递数组,但是C++中是可以的。这样就方便了许多
C语言函数操作数组:
C例2:C语言 使用指针遍历二维数组
/**
C++使用数组作为形式参数
C语言中数组不能作为参数传递。要想在函数中操作数组,只能传递指向数组的指针,
然后通过指针来操作数组,即:计算指针的偏移量来访问函数外的数组。
C++中是可以的传递数组的,
*/
#include<iostream>
using namespace std;
double avg(int arrays[],int sizes);
double avg2(int *arrays,int sizes);
int main()
{
int arrays[]={1,2,3,4,5,6,7,8,9,10};
int length=sizeof(arrays)/sizeof(arrays[0]);
double avg1=avg(arrays,length);
cout<<"avg="<<avg1<<endl;
avg1=0.0;
avg1=avg2(arrays,length);
cout<<"avg="<<avg1<<endl;
return 0;
}
/*
C++ 不会对形式参数执行边界检查 所有函数而言,数组的长度是无关紧要的
*/
double avg(int arrays[],int sizes)//C++支持向函数传输数组
{
// int length=sizeof(arrays)/sizeof(arrays[0]);
// cout<<"length="<<length<<endl;
double sum=0.0;
for(int i=0;i<sizes;i++)
{
sum+=(double)arrays[i];
}
return (double)sum/sizes;
}
double avg2(int *arrays,int sizes)//C++使用指针遍历数组
{
double sum=0.0;
for(int i=0;i<sizes;i++)
{
sum+=*(arrays+i);
}
return sum/sizes;
}
结果:
avg=5.5
avg=5.5