我正在参加C课程并开始使用函数。我完成了本章实验的代码并且运行正常。然后我去查看实验室包含的正确答案代码,它与我的不同。
我在主区域的函数调用中有“printf”,但是实验室的正确答案代码在主区域外面有printf,但是在运行程序时它们都得到完全相同的结果。
这让我很困惑。似乎总有两种不同的方法可以在C中完成同样的事情。
有人可以向我解释一下吗?
我的代码:
#include <stdio.h>
void closing(void);
int addSix(int x);
int main()
{
closing();
closing();
for(int index=0; index<10; index++) {
printf("Result: %d\n", addSix(index));
}
return 0;
}
void closing(void)
{
printf("That's all folks!\n");
}
int addSix(int x)
{
int result = x+6;
return result;
}
实验室的正确答案代码:
#include <stdio.h>
void closing(void);
void addSix(int x);
int main ()
{
closing();
closing();
for(int i = 0; i<10; i++){
addSix(i);
}
return 0;
}
void closing(void)
{
printf("That's all folks.\n");
}
void addSix(int x)
{
int result = x+6;
printf("Result: %d\n", result);
}
答案 0 :(得分:1)
实际上有数百种不同的方法。教师向您展示的方式是创建变量并进行赋值,然后将该变量传递给printf函数。
简单地将单行函数作为参数传递给不同的函数(稍微)更高级,这就是你所做的。它没有或多或少是错的;它只是不同。
他们工作的原因是因为他们有一个变量result,其中包含一个传递给printf函数的值。
您工作的原因是因为您将函数的返回值直接传递给printf函数而不使用中间变量。
答案 1 :(得分:1)
概念化这个的最简单方法是逐行遍历代码。您的printf
来电呼叫addSix
并打印结果。实验室版本从addSix
函数内部进行打印。编写代码总会有多种方法。在这种情况下,您的版本与官方版本一样有效。对于它的价值,我认为你的更好。