调用函数时如何修复 '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");
}
}
我对编程还很陌生。我写了一个小程序(来自 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");
}
}