当我遇到这种情况时,我正在测试范围和可见性,我找不到解释:
我有两个 .c 文件:
F1.c
#include <stdio.h>
void Modify();
int i;
int j;
int main()
{
i=1;
printf("i (main 1) = %d\n", i);
Modify();
printf("i (main 2) = %d\n", i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
和F2.c
#include <stdio.h>
extern char i [10];
extern int j;
void Modify()
{
j=0;
i[0]='a';
i[1]= 'b';
i[4]= 'e';
printf("i (Modify) = %c\n", i[0]);
printf("j (Modify) = %d\n", j);
}
Run Code Online (Sandbox Code Playgroud)
当我编译并链接它们以创建我启动的可执行文件时,结果如下:
我(主要 1)= 1
i (修改) = a
j(修改)= 0
我(主要 2)= 25185
怎么了?我会改变类型吗?给出一个大小的数组是否会压倒 F1.c 中 …