Как использовать глобальные переменные в C для использования одной и той же переменной в разных функциях

Я новичок в c, и я пытаюсь понять, как использовать глобальные переменные. Если я определяю одно в главном, переменные появляются как неопределенные в другой функции, но если я определяю его вне всех функций, все переменные, которые мне нужны глобальные, не определены. Любые советы о том, как правильно их использовать?

1 ответ

Вы определяете их выше основного, под своим включением:

#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;
}
</stdio.h>

В стороне, это не лучшая практика использования глобальных, особенно в многопоточных материалах. В некоторых приложениях это прекрасно, но всегда есть более правильный путь. Чтобы быть более правильным, вы могли бы объявить свои переменные, которые вам нужны в основном, а затем предоставить функции, которые изменяют им указатель на него.

то есть.

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
}

licensed under cc by-sa 3.0 with attribution.