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吗?
谢谢。
答案 0 :(得分:1)
这是完全有效的。一个好主意是否是一个单独的问题(在某些特定情况下可能会是一个问题)。
只要在取消引用指针时指针所指向的对象仍然存在,则该访问有效。由于这是一个全局变量,所以指向的对象(即static int var
变量)将始终存在,因此访问是完全有效的。
答案 1 :(得分:1)
是的,您可以通过其他文件中的指针来操作var
,因为变量var
具有静态存储持续时间,并且具有静态存储持续时间的对象在程序的 lifetime 内有效。