@Ouah дал совершенно верный ответ - я просто хочу осветить один аспект, который еще не появился.
В примере, который вы приводите, struct
очень маленький - один int
. Обычно вы используете struct
, потому что у вас есть ряд связанных полей, которые «принадлежат друг другу»; существует штраф за выполнение для возврата такого struct
из функции, поскольку он сделает копию всех элементов в стеке. Было бы предпочтительнее позвонить вашей функции с помощью указателей на структуры - как для входов, так и для возвращаемого значения. Это может выглядеть примерно так:
typedef struct
{
int hours;
} Time;
void addTime(Time *time1, Time *time2, Time *sumTime)
{
sumTime->hours = time1->hours + time2->hours;
}
И вы могли бы назвать его:
time1.hours = 4;
time2.hours = 5;
Time totalTime;
addTime(&time1, &time2, &totalTime);
printf("The total time is %d hours\n", totalTime.hours);
Примечание - в вашем случае, int
меньше указателя, так что ваш код будет более эффективным (с исправлена ошибка). Однако для любой «практической» структуры вышеупомянутый метод, вероятно, даст преимущество в производительности.
Из сообщений об ошибках я делаю вывод, что это C++. – alk