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 модификатор. Вы по-прежнему сможете передавать значение через функцию.

Если бы я был педантичным, я бы сказал нет. Может возвращать значение глобальной переменной. Это значение будет мгновенной копией, а не ссылкой. То есть когда глобальные изменения меняются, значение не изменится.

Помимо этого по разным причинам следует избегать глобальной переменной в первую очередь.

Другие вопросы по тегам