如何在C中使用全局变量在不同的函数中使用相同的变量

时间:2014-07-31 20:02:24

标签: c global-variables

我是c的新手,我试图弄清楚如何使用全局变量。如果我在main中定义一个变量在另一个函数中变为未定义,但是如果我在所有函数之外定义它,那么我想要全局的所有变量都是未定义的。有关如何正确使用它们的任何提示?

1 个答案:

答案 0 :(得分:2)

您可以在include之下将其定义在main之上:

#include <stdio.h>

int foo;
char *bar;

void changeInt(int newValue);

int main(int argc, char **argv) {
    foo = 0;
    changeInt(5);
    printf("foo is now %d\n", foo);
    return 0;
}

void changeInt(int newValue) {
    foo = newValue;
}

顺便说一句,使用全局变量并不是最好的做法,特别是在多线程的东西中。在某些应用程序中它完全没问题,但总有一种更正确的方法。更合适的是,你可以在main中声明你需要的变量,然后给它们修改指针的函数。

void changeInt(int *toChange, int newValue);

int main(int argc, char **argv) {
    int foo = 0;
    changeInt(&foo, 5);
    printf("foo is now %d\n", foo);
    return 0;
}

void changeInt(int *toChange, int newValue) {
    *toChange = newValue; // dereference the pointer to modify the value
}