在a.c文件中定义了数组int a[100],在b.c里用extern int *a定义,然后在两个文件里分别打印&a和a,前者的打印结果一致,后者打印结果不一样:
a.c: &a 0x601060, a 0x601060.
b.c: &a 0x601060, a (nil).
a.c代码:
int a[100];
void func_a()
{
printf("%s: &a %p, a %p.\n", __FILE__, &a, a);
}
b.c代码:
extern int *a;
extern void func_a();
int main(void)
{
func_a();
printf("%s: &a %p, a %p.\n", __FILE__, &a, a);
return 0;
}