Как исправить ошибку «ожидаемое выражение» при вызове функции? - PullRequest
0 голосов
/ 09 апреля 2019

Я очень новичок в программировании. Я написал небольшую программу (из курса 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 голосов
/ 09 апреля 2019

Как уже упоминалось, вам не нужно [] при передаче 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");
    }
} 
0 голосов
/ 09 апреля 2019

Вызовите вашу функцию как valid_triangle(side);

...