Могу ли я манипулировать переменной / массивом области файла с помощью указателя в другом файле? - PullRequest
0 голосов
/ 12 января 2019

A.c

static int var;

int* getVar(void)
{
    return &var;
}

хиджры

int* getVar(void);

B.c

#include "A.h"
int main(void)
{
    int* ptr = getVar(void);
    *ptr = 3;

    return 0;
}

Как заголовок. Могу ли я манипулировать переменной-областью действия файла через указатель внутри другого файла?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Да, вы можете манипулировать var с помощью указателя в другом файле, поскольку переменная var имеет статическую продолжительность хранения, а объекты со статической продолжительностью хранения живут в течение времени жизни программы.

0 голосов
/ 12 января 2019

Это совершенно верно. Является ли это хорошей идеей, это отдельный вопрос (и может быть, в некоторых частных случаях).

Пока объект, на который указывает указатель, все еще существует, когда вы разыменовываете его, доступ действителен. Поскольку это глобальная переменная, остроконечный объект (то есть переменная static int var) будет всегда существовать, и, таким образом, доступ будет полностью действительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...