c中,怎么把数组变成一个自定义函数的形参?还有,给一个数组做实参的例子吧。最后,看下我这个,,显示
c中,怎么把数组变成一个自定义函数的形参?还有,给一个数组做实参的例子吧。最后,看下我这个,,显示错在十八行,错误原因?应该怎么改?谢谢!...
c中,怎么把数组变成一个自定义函数的形参?还有,给一个数组做实参的例子吧。最后,看下我这个,,显示错在十八行,错误原因?应该怎么改?谢谢!
展开
1个回答
展开全部
你是问如何将数组传递给函数吧!
除了引用,变量传递都涉及到数据复制,也就是在函数内要接受实参时,需要一个容器保存传入的值,也就是形参的作用,进入函数后为形参在栈上分配内存空间,然后将外部变量的值保存到该空间,便于函数内处理,当函数退出时,释放该形参(变量)。
而传递数组时,为了防止复制大量的数据所造成的系统资源浪费(CPU时间和内存),C或C++采用指针传递,也即传递数组的地址。
由于地址对于某一个系统都是固定长度的,为了让函数知道数组中每个元素的数据长度,便于正确访问不同类型的数组,因此传入的地址必须具有类型。
针对你的题目中的问题,显然main中的数组a是个float类型一维数组,因此其地址类型为 float*。为了要正确实现传递,sum的形参应该定义同样类型的指针变量,所以sum应该如下定义:
float sum(int *p)
main中传递数组方法: x=sum(a);
sum函数中访问数组可以用指针也可以用数组形式,
比如
for (i=0;i<10;i++)
{
x=x+p[i];
}
也可以采用指针形式:
for (i=0;i<10;i++)
{
x=x+(*(p+1));
}
除了引用,变量传递都涉及到数据复制,也就是在函数内要接受实参时,需要一个容器保存传入的值,也就是形参的作用,进入函数后为形参在栈上分配内存空间,然后将外部变量的值保存到该空间,便于函数内处理,当函数退出时,释放该形参(变量)。
而传递数组时,为了防止复制大量的数据所造成的系统资源浪费(CPU时间和内存),C或C++采用指针传递,也即传递数组的地址。
由于地址对于某一个系统都是固定长度的,为了让函数知道数组中每个元素的数据长度,便于正确访问不同类型的数组,因此传入的地址必须具有类型。
针对你的题目中的问题,显然main中的数组a是个float类型一维数组,因此其地址类型为 float*。为了要正确实现传递,sum的形参应该定义同样类型的指针变量,所以sum应该如下定义:
float sum(int *p)
main中传递数组方法: x=sum(a);
sum函数中访问数组可以用指针也可以用数组形式,
比如
for (i=0;i<10;i++)
{
x=x+p[i];
}
也可以采用指针形式:
for (i=0;i<10;i++)
{
x=x+(*(p+1));
}
追问
那如果我想把一个数组当成函数的参数呢,就像我需要一个,输入一个数组,得出一个结果的高数应该怎么弄?
追答
上面说的就是“数组当成函数的参数", 即形参。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询