Когда указывать тип функции в C? - PullRequest
0 голосов
/ 07 апреля 2020

Я только начал изучать C Программирование и, пытаясь выполнить пару примеров упражнений, я не понял, когда лучше всего указывать тип функции.

Я заранее извиняюсь если мой заголовок вводит в заблуждение.

Одним из таких примеров является получение долларов (количество заметок), где я должен распечатать результаты. Пока он работает, я использую void, но при поиске в Интернете кажется, что вместо него следует использовать функцию int?

У меня есть 2 вопроса:

  1. Первоначально У меня есть мой printf оператор под void, в общем кодировании, должны ли такие операторы печати быть помещены туда или это должно быть в main()?
  2. Как упоминалось выше, используя этот пример моего случая, правильно / неправильно использовать void?

Мой код выглядит следующим образом:

#include <stdio.h>
void dollars_calculation(int *input_amt, int dollars_value)
{
    int change_result = 0;

    change_result = (*input_amt / dollars_value); 
    printf("Number of %3d-dollars:\t%d pcs\n", dollars_value, change_result);

    if (change_result)
    {
      *input_amt = (*input_amt - (dollars_value * change_result));
    }
}

int main()
{
    int input_amt = 0;
    int counter = 0;
    int dollars_arr[3] = {100, 50, 10};


    printf("Input amount: ");
    scanf("%d", &input_amt);

    for (counter=0; counter<3; counter++)
        {
            // Check for the number of denomiations required.
            dollars_calculation(&input_amt, dollars_arr[counter]);
      }

}

1 Ответ

0 голосов
/ 07 апреля 2020

«Тип функции», как вы его называете, на самом деле является типом данных, который вы, возможно, захотите, чтобы функция возвращала.

Например, ваша dollars_calculation функция может вернуть int, что является результатом вашего расчета, вместо того, чтобы использовать значение указателя для установки внешней переменной.

В качестве альтернативы вам может потребоваться возвращаемое значение, которое можно использовать для указания на успех или неудачу функции. Это не должно быть логическим значением, но может быть целочисленным или даже перечислимым типом.

В общем случае вы хотите писать функции так, чтобы они были полностью реентерабельными, то есть их можно вызывать несколько раз и их функция останется неизменной независимо от состояния программы. Функция, которая имеет возвращаемый тип void и не имеет параметров, как правило, указывает на не входящую функцию.

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

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