C 如何更改另一个文件中存在的外部变量的值?
我在head.h中定义了一个静态整数,如下所示 //头C 如何更改另一个文件中存在的外部变量的值?,c,static,global,extern,C,Static,Global,Extern,我在head.h中定义了一个静态整数,如下所示 //头 #include <stdio.h> #include <stdlib.h> static int a = 100; 当one.c正在等待时,我执行了two.c,它将a的值更改为80,我在head.c中将“a”声明为static,因此它只有一个内存来存储该值,不会创建副本。按ENTER键,2.c打印a的值为80。但现在,当在1.c中按Enter键时,它仍然打印100 //二、c #include "head.h"
#include <stdio.h>
#include <stdlib.h>
static int a = 100;
当one.c正在等待时,我执行了two.c,它将a的值更改为80,我在head.c中将“a”声明为static,因此它只有一个内存来存储该值,不会创建副本。按ENTER键,2.c打印a的值为80。但现在,当在1.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;
}
为什么这不起作用,如果有其他方法来更改外部变量,请告诉我。两个不同的进程无法看到彼此的地址空间,因为i386是专门为保护进程地址空间而制造的 如果您需要两个不同的进程和每个进程的共享内存,那么您需要线程,它不是一个进程,但它具有相似的行为 哦,当然你仍然可以像这样使用标准的输入输出: 在第一个过程中:
printf(“%d\n”,send)代码>
在第二个过程中:scanf(“%d”和&recv)代码>
但要使其工作,必须按如下方式运行程序:
/proc1 |/proc2
但是不是/proc2 |/proc1
和/proc1&&/proc2
并且不在不同的终端中
您也可以使用管道,如果需要,请在注释中询问我,我将说明两个独立的C程序不共享任何变量,除非您对操作系统进行一些特定调用以在两个程序之间共享内存。只是一个小建议,并不是说i386是专门为保护进程地址空间而设计的。这是您运行的任何操作系统的一个特性。进程隔离也可以在ARM、MIPS和其他体系结构上完成。
#include "head.h"
extern int a;
int main(void)
{
a = 80;
getchar();
printf("Value of a : %d\n", a);
return 0;
}