【发布时间】:2014-09-28 06:44:55
【问题描述】:
我在 head.h 中定义了一个静态整数,如下所示。
//head.h
#include <stdio.h>
#include <stdlib.h>
static int a = 100;
我在两个终端同时执行两个程序 one.c 和 two.c,第一个 one.c 因为我给了一个 getchar() 它等待从标准输入获取输入。
//one.c
#include "head.h"
extern int a;
int main(void)
{
getchar();
printf("Value of a : %d\n", a);
return 0;
}
当 one.c 等待时,我执行了 two.c,将 a 的值更改为 80,我在 head.c 中将 'a' 声明为静态,因此它只有一个内存来存储该值,没有副本创建的。按 ENTER,two.c 打印 a 的值为 80。但现在在 one.c 中按 Enter 时,它仍然打印 100。
//两个.c
#include "head.h"
extern int a;
int main(void)
{
a = 80;
getchar();
printf("Value of a : %d\n", a);
return 0;
}
为什么这不起作用,如果有其他方法可以更改外部变量,请告诉我。
【问题讨论】:
-
两个单独的 C 程序不共享 any 变量,除非您对操作系统进行一些特定调用以在两个程序之间共享内存。