在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;
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.