无法使C中的函数正确执行
我有一个我正在尝试创建的简单函数。我需要这个函数在用户决定进入程序的任何数字上加6。我已经用这段代码工作了一个小时,甚至在看了我正在学习的课程中的多个示例之后,也无法找出我做错了什么。我真的很感谢你的帮助 这是我的密码:无法使C中的函数正确执行,c,function,C,Function,我有一个我正在尝试创建的简单函数。我需要这个函数在用户决定进入程序的任何数字上加6。我已经用这段代码工作了一个小时,甚至在看了我正在学习的课程中的多个示例之后,也无法找出我做错了什么。我真的很感谢你的帮助 这是我的密码: #include <stdio.h> void closing(void); void addSix(void); int x; int result; int main() { int x; printf("Please enter a num
#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);
}
#包括
作废关闭(作废);
无效加六(无效);
int x;
int结果;
int main()
{
int x;
printf(“请输入一个数字添加到6:”);
scanf(“%d”和&x);
getchar();
addSix();
关闭();
关闭();
返回0;
}
作废关闭(作废)
{
printf(“这就是所有的人。\n”);
}
空加六(空)
{
int结果=x+6;
printf(“结果:%d\n”,结果);
}
您在main()外部有一个全局x
变量,在main()内部有一个局部x
。main()中的代码写入本地x
,而addSix()中的代码从全局x
读取
删除main()中的
int x
声明,这样两个位置都可以访问全局x
您在main()之外有一个全局x
变量,在main()之内有一个局部x
。main()中的代码写入本地x
,而addSix()中的代码从全局x
读取
删除main()中的
int x
声明,以便两个位置都访问全局x
您有两个名为x
的变量。一个是本地到main
,另一个是全局变量
函数addSix
无法在main
中查看本地。它只能看到全局变量
您应该更改addSix
,以便将值作为参数传递给它
void addSix(int x)
{
printf("Result: %d\n", x+6);
}
按如下方式调用函数:
addSix(x);
int result = addSix(x);
int addSix(int x) {
return x + 6;
}
void addSix(int * x) {
*x += 6;
}
或者,您可能希望函数返回一个值:
int addSix(int x)
{
return x+6;
}
你可以这样称呼它:
addSix(x);
int result = addSix(x);
int addSix(int x) {
return x + 6;
}
void addSix(int * x) {
*x += 6;
}
这两个全局变量都是不必要的。删除它们。您有两个名为
x
的变量。一个是本地到main
,另一个是全局变量
函数addSix
无法在main
中查看本地。它只能看到全局变量
您应该更改addSix
,以便将值作为参数传递给它
void addSix(int x)
{
printf("Result: %d\n", x+6);
}
按如下方式调用函数:
addSix(x);
int result = addSix(x);
int addSix(int x) {
return x + 6;
}
void addSix(int * x) {
*x += 6;
}
或者,您可能希望函数返回一个值:
int addSix(int x)
{
return x+6;
}
你可以这样称呼它:
addSix(x);
int result = addSix(x);
int addSix(int x) {
return x + 6;
}
void addSix(int * x) {
*x += 6;
}
这两个全局变量都是不必要的。删除它们。将x声明为全局变量和main的局部变量。通过指针将x传递给scanf时,它引用的是局部变量,而不是全局变量 您可以删除main中intx的本地声明,但这并不是最好的解决方案。通常,应尽可能避免使用全局变量(当然,它们有时是必要的/工作的最佳工具) 在这种情况下,最好的解决方案是将x作为addSix()的参数。这里有几个选项:
- 您可以让addSix返回总和,然后使用该返回值
- 您可以将x的地址传递给addSix,并让函数使用指针修改x本身
addSix(x);
int result = addSix(x);
int addSix(int x) {
return x + 6;
}
void addSix(int * x) {
*x += 6;
}
后者将如下所示:
addSix(x);
int result = addSix(x);
int addSix(int x) {
return x + 6;
}
void addSix(int * x) {
*x += 6;
}
将x声明为全局变量和main的局部变量。通过指针将x传递给scanf时,它引用的是局部变量,而不是全局变量 您可以删除main中intx的本地声明,但这并不是最好的解决方案。通常,应尽可能避免使用全局变量(当然,它们有时是必要的/工作的最佳工具) 在这种情况下,最好的解决方案是将x作为addSix()的参数。这里有几个选项:
- 您可以让addSix返回总和,然后使用该返回值
- 您可以将x的地址传递给addSix,并让函数使用指针修改x本身
addSix(x);
int result = addSix(x);
int addSix(int x) {
return x + 6;
}
void addSix(int * x) {
*x += 6;
}
后者将如下所示:
addSix(x);
int result = addSix(x);
int addSix(int x) {
return x + 6;
}
void addSix(int * x) {
*x += 6;
}
您有一个全局
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;
}
#包括
int x;
空加六(空)
{
int结果=x+6;
printf(“结果:%d\n”,结果);
}
int main()
{
printf(“请输入一个数字添加到6:”);
scanf(“%d”和&x);
getchar();
addSix();
返回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;
}
#包括
int x;
空加六(空)
{
int结果=x+6;
printf(“结果:%d\n”,结果);
}
int main()
{
printf(“请输入一个数字添加到6:”);
scanf(“%d”和&x);
getchar();
addSix();
返回0;
}
您有两个本地x
变量(它们应该是),还有一个全局x
。但是,addSix
不知道您在main
中声明的x
。您需要使用参数传递和来自addSix
的返回语句。这就像一个家庭作业问题。调试此代码!您有两个本地x
变量(它们应该是)和一个全局x
。但是,addSix
不知道您在main
中声明的x
。您需要使用参数传递和来自addSix
的返回语句。这就像一个家庭作业问题。调试此代码!我从主区域删除了int x,现在一切都运行得很好。谢谢大家!@user305515这可能会使您的程序正常工作,但这确实是错误的解决方案。您应该停止使用全局变量。我是认真的。住手!不要这样做。使用局部变量和传递参数。试着重新编写代码来完成它