我知道这个话题已经解决过几次了,但是我还是不明白。
参考http://c-faq.com/aryptr/aryptr2.html
char a[] = "hello";
char *p = "world";
Run Code Online (Sandbox Code Playgroud)
创建一个数组“ a”。该变量只是第一个内存地址的地址的标签。p是一个变量(==另一个内存地址的标签),包含第一个字符的地址(w-可能在内存中的其他位置)。

我不明白的是该主题的示例(谢谢!): 使用extern将数组与指针链接:
extern1.c
extern int *array;
int test();
int main(int argc, char *argv[])
{
printf ("in main: array address = %x\n", array);
test();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
extern2.c
int array[10] = {1, 2, 3};
int test()
{
printf ("in test: array address = %x\n", array);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么指针指针变量“ extern int * array”(==内存地址的标签,包含另一个地址)在extern1中已经包含array [0]的内容?
有什么区别
int array[10] = {1, 2, 3};
int *ptrArrWorking = array; // == …Run Code Online (Sandbox Code Playgroud)