【发布时间】:2019-06-07 10:06:16
【问题描述】:
我可以使用全局指针访问静态变量吗?
//In main.c file
static int c = 20; #Static vairble
int *ptr = &c; #Global pointer variable
int main(){
fun();
printf("%d\n", c);
}
//In sub.c file
extern int *ptr;
void fun(){
++*ptr;
}
当我尝试在另一个文件中使用 extern 关键字访问 *ptr 全局变量时,我能够访问静态变量 c,甚至对 *ptr 所做的更改也反映在 main.c 文件中的 c 上
为什么“ptr”即使在被静态变量地址赋值后也不会丢失其全局属性?
是静态和全局存储在两个不同的内存段中,还是它们都共享同一个内存数据段?
全局变量可以存储非常量值吗?
【问题讨论】:
-
++*ptr实际上是做什么的?发生了什么间接性?
标签: c static global-variables