【发布时间】:2023-02-08 21:43:03
【问题描述】:
在下面的代码中,我将变量 var 设置为 20,然后将指针 ptr 指向 var 的地址。然后指针ptrptr来保存指针ptr的内存地址。
#include <stdio.h>
void pointers()
{
int var = 20;
int* ptr;
ptr = &var;
int *ptrptr = ptr;
printf("Value at ptrptr[0] = %d \n", ptrptr[0]);
}
// Driver program
int main()
{
pointers();
return 0;
}
输出:
Value at ptrptr[0] = 20
为什么ptrptr[0]返回的是val存储的值,而不是指针ptr的内存地址。
我认为索引运算符 [] 返回该值存储的值。
【问题讨论】:
-
代码中没有
val -
ptrptr和ptr都是相同的类型并且拥有相同的值——var的地址。如果你想让ptrptr持有ptr的地址,你需要另一个间接级别:int **ptrptr = &ptr;。