我知道在C语言中,指针是一个保存地址的变量。 例如:
int myVar;
int *p;
p = &myVar;
printf("%p\n", p);
printf("%p\n", &p);
输出将是两个不同的地址,第一个是myVar的地址,第二个是指针本身的地址,这意味着指针也是一个变量,并且在内存中有一个地址(如果我错了,请纠正我)。
但我的问题与数组有关,例如我们有这段代码:
int myArray[10];
在这里,我认为myArray也是一个指针,它保存了myArray的起始点即myArray[0]的地址。所以当我打印myArray[0]和myArray的地址时,得到的结果是相同的:
printf("%p\n", &myArray[0]);
printf("%p\n", myArray);
现在让我困惑的是当我尝试打印myArray本身的地址时:
printf("%p\n", &myArray);
在这里,我得到了与指针类似的结果。myArray是一个标签还是其他什么东西?