C: может ли функция вернуть глобальную переменную?
Предположим, у меня есть файл *.c с глобальной переменной ("глобальной" в том смысле, что он имеет область действия файла) и функцией. Может ли функция вернуть эту переменную в качестве значения, которое будет использоваться в других единицах перевода?
Я предполагаю, что ответ "да". Если ничего другого, я предполагаю, что в C return работает в семантике "копирования" --- значение возвращаемого выражения возвращается. Но я не уверен.
4 ответа
Да. И вы правы: если вы вернете что-то вроде int
, тогда вы вернете копию своего текущего. Если вы вернете указатель, вы предоставите им доступ к самой переменной.
Ну, что-то вроде этого?
переменный ток
int foo = 3;
int get_foo() { return foo; }
main.c
#include <stdio.h>
#include "a.c"
int main(void)
{
printf("%d\n", get_foo());
return 0;
}
выход:
3
Я предполагаю, что ответ "да". Если ничего другого, я предполагаю, что в C return работает в семантике "копирования" --- значение возвращаемого выражения возвращается. Но я не уверен.
Ты прав.
Предположим, у меня есть файл *.c с глобальной переменной ("глобальный" в том смысле, что он имеет область действия файла)
Имейте в виду, что объявление переменной глобально в файле.c делает ее глобальным периодом. Если вы хотите ограничить область видимости файла, используйте static
модификатор. Вы по-прежнему сможете передавать значение через функцию.
Если бы я был педантичным, я бы сказал нет. Может возвращать значение глобальной переменной. Это значение будет мгновенной копией, а не ссылкой. То есть когда глобальные изменения меняются, значение не изменится.
Помимо этого по разным причинам следует избегать глобальной переменной в первую очередь.