我可以通过其他文件中的指针来操作文件作用域变量/数组吗?

时间:2019-01-12 05:37:03

标签: c pointers

A

static int var;

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

A.h

int* getVar(void);

B.c

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

    return 0;
}

作为标题。我可以通过其他文件中的指针来操作文件作用域变量var吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

这是完全有效的。一个好主意是否是一个单独的问题(在某些特定情况下可能会是一个问题)。

只要在取消引用指针时指针所指向的对象仍然存在,则该访问有效。由于这是一个全局变量,所以指向的对象(即static int var变量)将始终存在,因此访问是完全有效的。

答案 1 :(得分:1)

是的,您可以通过其他文件中的指针来操作var,因为变量var具有静态存储持续时间,并且具有静态存储持续时间的对象在程序的 lifetime 内有效。