C 如何计算数组的长度?

C 如何计算数组的长度?,c,function,cs50,C,Function,Cs50,我在做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++)

我在做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;
  }
#包括
#包括
常量int数组_长度=3;
浮点平均值(整数长度,整数数组[]);
内部主(空)
{
整数分数[数组长度];
for(int i=0;i

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

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

数组长度
-->
长度

得分
-->
数组[]

看看这里全局声明的长度-
const int array_length=3。
因此,参数
length
也得到了
array\u length
的值


你可以说,array_length=3=length。

函数调用
average(array_length,scores)
将值
array_length
分配给参数
length
@Peter_Elfen22编译器知道数组的大小等于3,这是由于声明const int array_length=3@尤诺什:我明天会考虑这个问题。@VladfromMoscow,太晚了。;-)我对提议的副本提出质疑。在这种情况下,讨论查找数组长度的一般问题(特别是在函数内部,并且仅以数组作为参数)不适用,这里显示的代码有一个有趣的(并且在适当的用例中更有效)解决方案,OP只是为了理解而询问这个解决方案。对于所问的问题,这里现有的答案要好得多@0 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
确保
数组长度
的值可靠地等于数组的实际长度。在我看来,这会很好地弥补你的答案,使你的答案变得令人信服。很好的解释。但是为什么我不能在函数array_length-->array_length scores-->scores[]中使用此变量