【问题标题】:How can I count the length of the array? [duplicate]如何计算数组的长度? [复制]
【发布时间】:2021-05-30 18:58:47
【问题描述】:

我在做 CS50。他们讨论功能

  #include <cs50.h>
  #include <stdio.h>

  const int array_length = 3;

  float average(int length, int array[]);

  int main(void)
  {
      int scores[array_length];
      for (int i = 0; i < array_length; i++)
      {
          scores[i] = get_int("Score: ");
      }

      printf("Average: %f\n", average(array_length, scores));
  }

  float average(int length, int array[])
  {
      int sum = 0;
      for (int i = 0; i < length; i++)
      {
          sum += array[i];
      }
      return sum / (float) length;
  }

在他们声明“长度”变量的函数中。但是为什么他们不给它赋值呢? C怎么知道“长度”是3?

【问题讨论】:

  • 函数 call average(array_length, scores) 将值 array_length 分配给参数 length
  • @Peter_Elfen22 由于这个声明,编译器知道数组的大小等于3 const int array_length = 3;
  • @Yunnosch 我明天会考虑的。
  • @VladfromMoscow 太晚了。 ;-)
  • 我对提议的副本提出质疑。在这种情况下,讨论查找数组长度的一般问题(尤其是在函数内部,并且有问题仅将数组作为参数)在这种情况下不适用,其中显示的代码有一个有趣的(并且在适当的用例中更有效)的解决方案OP只是为了理解而询问。对于所提出的问题,此处的现有答案要好得多。 @0_______

标签: c function cs50


【解决方案1】:

当您从 main 调用 average() 函数时,您也在传递两个值,例如 average(array_length, scores)。然后,正如原型所声明的那样 float average(int length, int array[])函数会捕获这些值。

array_length --> length

scores --> array[]

看看这里的长度是全局声明的 - const int array_length = 3;。 所以,length 参数也得到了array_length 的值。

你可以说,array_length = 3 = 长度。

【讨论】:

  • 请注意,使用int scores[array_length]; 中的常量可以保证array_length 的值可靠地是数组的实际长度。在我看来,这会很好地让你的答案变得受欢迎。
  • 很好的解释。但是为什么我不能在函数 array_length --> array_length scores --> scores [] 中使用这个变量
猜你喜欢
  • 2014-04-08
  • 1970-01-01
  • 2013-02-18
  • 2020-02-19
  • 2010-11-10
  • 1970-01-01
  • 2022-12-20
  • 1970-01-01
相关资源
最近更新 更多