调用函数时如何解决“预期表达式”错误?

时间:2019-04-09 15:05:16

标签: c cs50

我对编程很陌生。我写了一个小程序(来自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");
    }
} 

问题是我在这里(我调用该函数的最后一行)不断收到“预期表达式”错误:

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

我该如何解决? 先感谢您!

2 个答案:

答案 0 :(得分:0)

valid_triangle(side);的身份调用函数

答案 1 :(得分:0)

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

#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");
    }
}