我知道C语言中的指针是一个保存地址的变量。例如:
int myVar;
int *p;
p = &myVar;
printf("%p\n", p);
printf("%p\n", &p);
Run Code Online (Sandbox Code Playgroud)
输出将是两个不同的地址,第一个是myVar的地址,第二个是指针本身的地址,这意味着指针也是变量,并且在内存中有一个地址(如果我错了,请更正我)
但是我的问题是关于数组的,例如,我们有以下代码:
int myArray[10];
Run Code Online (Sandbox Code Playgroud)
所以在这里我认为myArray也是一个指针,它保存着myArray的起始地址,在本例中是myArray [0],所以当我打印myArray [0]和myArray的地址时,我得到相同的结果:
printf("%p\n", &myArray[0]);
printf("%p\n", myArray);
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试打印myArray本身的地址时,这对我来说是令人困惑的部分:
printf("%p\n", &myArray);
Run Code Online (Sandbox Code Playgroud)
在这里,我得到了与我希望获得另一个地址(如指针)相同的结果。myArray是标签还是其他东西?
&myArray[0]是数组第一个元素&myArray的地址,是数组的地址。这些地址必须具有相同的地址,但类型不同。
myArray是不是一个指针。它是在某些情况下衰减为类型的指针的数组int*。作为的参数printf就是这种情况。
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |