【问题标题】:Index of pointer指针索引
【发布时间】: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
  • ptrptrptr 都是相同的类型并且拥有相同的值——var 的地址。如果你想让ptrptr持有ptr的地址,你需要另一个间接级别:int **ptrptr = &amp;ptr;

标签: c pointers


【解决方案1】:

ptrptr[0]

与(因为ptrptr = ptr)相同:

ptr[0]

这与(因为a[b] == *(a+b))相同:

*ptr

这与var 相同,因为ptr 指向var,而*ptr 取消引用指针。

var 的值为20

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    相关资源
    最近更新 更多