调用函数时如何修复 'expected expression' 错误?

How to fix 'expected expression' error when calling a function?

我对编程还很陌生。我写了一个小程序(来自 CS50 课程,第 2 周)来检查三角形是否有效。

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

void valid_triangle(int side[]);

int main(void)
{

    int side[3];
    for (int i = 0; i < 3; i++)
    {
        side[i]  = get_int("Side %i: ", i+1);
    }
    valid_triangle(side[]);
}

void valid_triangle(int side[])
{
    if (side[0] + side[1] >= side[2] || side[0] + side[2] >= side[1] || side[1] + side[2] >= side[0])
    {
        printf("true\n");
    }
    else
    {
        printf("false\n");
    }
} 

问题是我一直在这里收到 'expected expression' 错误(我调用该函数的最后一行):

for (int i = 0; i < 3; i++)
    {
        side[i]  = get_int("Side %i: ", i+1);
    }
    valid_triangle(side[]);

我该如何解决这个问题? 先感谢您!

将函数调用为 valid_triangle(side);

正如其他人提到的,将 side 传递给 valid_triangle 时不需要 []。将数组传递给函数时,我们实际上并不是将整个数组传递给函数,而是告诉函数在哪里可以找到数组。当您编写 valid_triangle(side) 时,您实际上是将指针(内存中的位置)传递给数组的第一个元素,然后接收函数知道 how/where 根据我们传递的变量访问数组。

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

void valid_triangle(int side[]);

int main(void)
{

    int side[3];
    for (int i = 0; i < 3; i++)
    {
        side[i]  = get_int("Side %i: ", i+1);
    }
    valid_triangle(side);
}

void valid_triangle(int side[])
{
    if (side[0] + side[1] >= side[2] || side[0] + side[2] >= side[1] || side[1] + side[2] >= side[0])
    {
        printf("true\n");
    }
    else
    {
        printf("false\n");
    }
}