首页 > 解决方案 > 何时在 C 中指定函数类型?

问题描述

我刚刚开始学习 C 编程,在尝试做一些示例练习时,我发现自己对何时是指定函数类型的最佳方案感到困惑。

如果我的标题具有误导性,我提前道歉。

一个这样的例子是获取我想打印出结果的美元(纸币数量)。虽然我让它工作,但我正在使用void,但在网上看时,似乎int应该使用该功能?

我有两个问题:

  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]);
      }

}

标签: cfunction

解决方案


您所说的“函数类型”实际上是您可能希望函数返回的数据类型。

例如,您的dollars_calculation函数可以返回一个int,这是您的计算结果,而不是使用指针值来设置外部变量。

或者,您可能希望返回一个可用于指示函数成功或失败的值。这不必是布尔值,但可以是整数甚至枚举类型。

通常,您希望编写函数以使其完全可重入 - 这意味着它们可以被多次调用,并且无论程序状态如何,它们的功能都将保持不变。具有 void 返回类型且不带参数的函数通常表示不可重入函数。

语句的使用和位置printf取决于您的程序结构以及您希望程序执行的操作。使用它们没有正确或错误的地方,但在某些环境中,为方便起见,您可能希望将它们定位在一个模块(代码文件)中,例如以特定方式格式化或定向输出。


推荐阅读