在C中,指针变量在内存中的处理方式与正常变量的处理方式不同吗?

时间:2018-05-29 09:37:49

标签: c pointers

我试图绕过指针,但目前却让人感到困惑。

当C编译器遇到内存中的变量时,它自然会读取存在的值。如果" X"等于8,那么X的值将被读出为8。

但是当编译器遇到内存中的指针时,它不会读取指针的值(指针的值是随机的),而是转到存储在指针中的地址。

但问题是,每个变量都有一个值和一个地址。为什么C专门去指针变量的地址?

我不确定如何以有道理的方式说出来。

当我们可以使用&amp ;;访问任何变量的地址时,声明指针变量的重点是什么?运算符并打印指针?

我无法直观显示指针变量。

我现在看到的方式是,每个变量都有一个地址和一个值。这是事实。我不确定指针变量的作用,因为它像普通变量一样,也有一个值和一个地址。

1 个答案:

答案 0 :(得分:1)

在存储时,指针变量的处理方式与任何其他变量的处理方式相同。

给出以下声明

int i = 1;
int *p = &i;
你得到这样的东西:

Item        Address            Value
––––        –––––––            –––––
   i        0x8000                 1    // address values for illustration
   p        0x8004            0x8000    // purposes only

整数变量i存储在地址0x8000并包含值1。指针变量p存储在地址0x8004,包含i的地址。

IOW,ip之间的唯一区别是它们存储的值的类型以及允许对它们执行的操作。

至于我们使用指针的原因,在以下情况下它们是必需的

  • 跟踪动态分配的内存;
  • 允许函数修改输入参数的值

它们在构建动态数据结构时也很有用。