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