我正在尝试创建一个简单的函数。我需要这个函数将6添加到用户决定输入程序的任何数字。我一直在使用这段代码一个小时,即使看了我正在考虑的课程中的多个例子,也无法弄清楚我做错了什么。我非常感谢你的帮助。
这是我的代码:
#include <stdio.h>
void closing(void);
void addSix(void);
int x;
int result;
int main()
{
int x;
printf("Please enter a number to add to 6: ");
scanf("%d", &x);
getchar();
addSix();
closing();
closing();
return 0;
}
void closing(void)
{
printf("That's all folks.\n");
}
void addSix(void)
{
int result = x+6;
printf("Result: %d\n", result);
}
答案 0 :(得分:2)
你在main()之外有一个全局x
变量,在main()里面有一个本地x
。 main()内部的代码写入本地x
,而addSix()中的代码从全局x
读取。
删除main()中的int x
声明,以便两个地点都可以访问全局x
。
答案 1 :(得分:2)
您将x声明为全局变量和main的本地变量。当您通过指针传递x到scanf时,它引用局部变量,而不是全局变量。
您可以在main中删除int x的本地声明,但这不是最佳解决方案。通常,应尽可能避免全局变量(当然,它们有时是必要的/最佳工具)。
在这种情况下,最好的解决方案是使x成为addSix()的参数。这里有几个选项:
前者看起来像这样:
int addSix(int x) {
return x + 6;
}
后者看起来像这样:
void addSix(int * x) {
*x += 6;
}
答案 2 :(得分:1)
您有两个名为x
的变量。一个是main
的本地,另一个是全局变量。
功能addSix
无法在main
中看到本地。它只能看到全局变量。
您应该更改addSix
,以便将值作为参数传递。
void addSix(int x)
{
printf("Result: %d\n", x+6);
}
像这样调用函数:
addSix(x);
或许你希望你的函数返回一个值:
int addSix(int x)
{
return x+6;
}
你可以这样打电话:
int result = addSix(x);
你的两个全局变量都是不必要的。删除它们。
答案 3 :(得分:0)
您有一个全局x
和一个本地x
变量,您可以在其中实际保存用户输入。
只使用全局变量就可以解决这个问题
#include <stdio.h>
int x;
void addSix(void)
{
int result = x+6;
printf("Result: %d\n", result);
}
int main()
{
printf("Please enter a number to add to 6: ");
scanf("%d", &x);
getchar();
addSix();
return 0;
}