使用指针而不是数组的外部变量

3
假设我们有两个文件。
1)file1.c。
int Appples[10];

2) file2.c

extern int *Appples;

除了我必须独立处理大小之外,这种声明方式有什么问题吗?


为什么不使用 extern int Apples[10]; - Mahesh
@Mahesh,它真的会影响行为吗? - Alex
是的,有一个问题:它不是有效的。不要这样做。 - n. m.
@Alex 是的。如果您愿意,我可以添加另一个答案,并提供具体示例和汇编代码。 - fuz
2个回答

5

这在 C FAQs 6.1 中有详细解释。

类型指向类型T的指针与类型T的数组不同。使用extern char a[]。

这个答案更具体地解决了这个问题。最终的观点是:数组不是一个指针,你不应该把它当作一个指针来处理。


1
当你声明一个变量时,如下所示:

extern int *Appples;

它需要被定义为:
int *Appples = <initializer>;

不是这样:

int Appples[10];

如果您想定义使用方法:
int Appples[10];

可以声明为:

extern int Appples[10];

或者

extern int Appples[];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接