【C语言】global和全局变量的用法,如何在自定义函数中修改全局变量的取值,不要传递给形参,直接引用修改即可

一、问题背景

最近在研究C语言中的全局变量,发现不像Python语言那样——在子函数中给全局变量赋值需要用到global关键字。

C语言中,在主函数、自定义函数中,可以直接引用全局变量,并且不用加任何关键字就可以对其修改。

然而,在某次执行代码过程中,我发现竟然改不了。

代码如下:

#include <stdio.h>

static int a = 1;
static int b = 2;

int add(int x, int y)
{
    
    
    x = 9;
    y = 10;
    printf("%d\n", x+y);
    return x+y;
}


int main()
{
    
    
    add(a, b);
    a = 3;
    b = 4;
    add(a, b);
    printf("%d\n", a);
    printf("%d\n", b);
    return 0;
}

输出结果如下:
在这里插入图片描述

二、解决办法

后来,我发现原来是因为我将a和b传给形参,在自定义函数中通过形参来修改全局变量了(这是不行的)。

改成下面的形式就好了。

#include <stdio.h>

static int a = 1;
static int b = 2;

int add(int x, int y)
{
    
    
    a = 9;
    b = 10;
    printf("%d\n", x+y);
    return x+y;
}


int main()
{
    
    
    add(a, b);
    a = 3;
    b = 4;
    add(a, b);
    printf("%d\n", a);
    printf("%d\n", b);
    return 0;
}

输出结果是
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/PSpiritV/article/details/130045232