【发布时间】: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_______