首页 > 解决方案 > 将一组 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;
   }

它说我向函数传递了太多参数。

标签: c

解决方案


你路过intNumbers[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;
  }

请注意,通常您也希望传递大小,以便检查边界,从而避免过度索引数组。


推荐阅读