Как работают вызовы функций с параметрами в C? - PullRequest
1 голос
/ 24 октября 2019

Я изучаю C и наткнулся на то, что мне было интересно. Для меня вызов foo в main, как следует, ничего не возвращает:

int foo(bar){
    return bar * 2;
}

int main(){
    foo(10);
}

Только когда я отформатирую вывод с помощью printf, он вернет результат из foo в main. Это предназначено или я что-то упустил? Работает следующий пример:

int foo(bar){
    return bar * 2;
}

int main(){
    // will return 20
    printf("%d\n", foo(10));
}

Ответы [ 2 ]

4 голосов
/ 24 октября 2019

Вызов функции foo (10) в

    int foo(bar){
        return bar * 2;
    }

    int main(){
        foo(10);
    }

действительно возвращает значение. Но вы не записывали его в какую-либо переменную и не печатали возвращаемое значение. Ваш второй пример на самом деле печатает значение, возвращаемое из foo(10);

0 голосов
/ 24 октября 2019

Уже есть полезный ответ, поэтому вот более технический ответ:

Во втором примере вы напечатали отредактировали результат foo(10), но есть способна самом деле возвращает значение из программы на языке C.

int main() {
    return 14;
}

Сразу после запуска сценария в оболочке echo $? (или echo %errorlevel% в Windows) напечатает код выходапрограммы, которая для простой программы на C - это значение, возвращаемое main.

Обычно значение 0 представляет успех, а все остальное указывает на ту или иную ошибку. Другим распространенным способом генерации кода выхода является передача целого числа (или констант EXIT_SUCCESS или EXIT_FAILURE) в функцию exit из stdlib.h.

(Конечно, вы обычно хотитераспечатывать результаты вашей программы или записывать их в файл, чтобы их было легко просмотреть или сохранить на потом, но это тот тип различия, о котором полезно знать, даже если он не выглядит какчасто.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...