c - 何时在 C 中指定函数类型?
问题描述
我刚刚开始学习 C 编程,在尝试做一些示例练习时,我发现自己对何时是指定函数类型的最佳方案感到困惑。
如果我的标题具有误导性,我提前道歉。
一个这样的例子是获取我想打印出结果的美元(纸币数量)。虽然我让它工作,但我正在使用void
,但在网上看时,似乎int
应该使用该功能?
我有两个问题:
- 最初,我在一般编码下有我的
printf
声明void
,应该将此类打印声明放在那里还是应该放在main()
? - 如上所述,使用我的这个案例示例,使用是对还是错
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]);
}
}
解决方案
您所说的“函数类型”实际上是您可能希望函数返回的数据类型。
例如,您的dollars_calculation
函数可以返回一个int
,这是您的计算结果,而不是使用指针值来设置外部变量。
或者,您可能希望返回一个可用于指示函数成功或失败的值。这不必是布尔值,但可以是整数甚至枚举类型。
通常,您希望编写函数以使其完全可重入 - 这意味着它们可以被多次调用,并且无论程序状态如何,它们的功能都将保持不变。具有 void 返回类型且不带参数的函数通常表示不可重入函数。
语句的使用和位置printf
取决于您的程序结构以及您希望程序执行的操作。使用它们没有正确或错误的地方,但在某些环境中,为方便起见,您可能希望将它们定位在一个模块(代码文件)中,例如以特定方式格式化或定向输出。
推荐阅读
- python - 添加一天列
- java - 如何在 Java 中修复“.class expected”
- c - malloc 在编译时和运行时如何处理?
- sql-server - 涌入 SQL Server 连接
- c - LD_LIBRARY_PATH 对 LibXML.so 不生效
- angular - 如何从 firebase 实时数据库中获取用户列表及其 UID
- divide-and-conquer - 如何使用分治法将十进制数转换为二进制数?
- php - 我尝试更多上传图片,但即使我尝试更多,它也会提供错误
- javascript - 使用 nodejs 添加对象数组并在 file.txt 上读取它
- python - 用于熊猫数据框的 jupyter notebook 中的交互式多图表小部件