c - 将一组 Array 传递给新函数进行计算
问题描述
它会产生错误。
int main(void)
{
int Numbers[9]={1,2,3,4,5,6,7,8,9};
printf("%i\n", SUM(Numbers[9]));
}
int SUM(int array[int n])
{
int sum = array[1]*2 + array[2]*3 + array[3]*4 + array[4]*6 + array[5]*6;
return sum;
}
它说我向函数传递了太多参数。
解决方案
你路过int
。Numbers[9]
您需要通过将指针传递给它来传递数组。但实际上一维数组名称实际上是指向数组第一个元素的指针。这将解决它:
int main(void)
{
int Numbers[9]={1,2,3,4,5,6,7,8,9};
printf("%i\n", SUM(Numbers)); // passing the pointer to the array
}
int SUM(int array[]) // int SUM(int *array) would also work
{
int sum = array[1]*2 + array[2]*3 + array[3]*4 + array[4]*6 + array[5]*6;
return sum;
}
请注意,通常您也希望传递大小,以便检查边界,从而避免过度索引数组。
推荐阅读
- python - python中法语单词的复数到单数
- apache-spark - 如何在 impala 中捕获丢失的记录
- ruby - 如果 fluentd 中的正则表达式模式不匹配,则打印一个完整的行
- r - VarSelLCM 返回错误,但输入变量似乎是因子和整数
- wordpress - 将一页嵌入另一页(简码?)
- animation - 使用 (x,y,z) 坐标信息为 3D 角色设置动画
- linux - Bash - 获取文件的内容
- laravel - 在 Laravel 7 测试中使用自定义测试模型
- c# - 用具有超链接的 HTML 替换 dotx 文件中的 sdtelement 在 C# 中不起作用
- javascript - 使用 JavaScript 在玩家之间切换