Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使C中的函数正确执行_C_Function - Fatal编程技术网

无法使C中的函数正确执行

无法使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

我有一个我正在尝试创建的简单函数。我需要这个函数在用户决定进入程序的任何数字上加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);
}
#包括
作废关闭(作废);
无效加六(无效);
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这可能会使您的程序正常工作,但这确实是错误的解决方案。您应该停止使用全局变量。我是认真的。住手!不要这样做。使用局部变量和传递参数。试着重新编写代码来完成它