C语言指针解引用

2025年3月17日 | 阅读 3 分钟

正如我们已经知道的 “什么是指针”,指针是一个存储另一个变量地址的变量。解引用运算符也称为间接运算符,由 (*) 表示。当间接运算符 (*) 与指针变量一起使用时,它被称为 解引用指针。 当我们解引用指针时,将返回该指针指向的变量的值。

为什么我们要使用指针解引用?

使用指针解引用的原因如下:

  • 它可以用于访问或操作存储在指针指向的内存位置的数据。
  • 对解引用指针施加的任何操作都将直接影响其指向的变量的值。

让我们观察以下步骤来解引用指针。

  • 首先,我们声明指针指向的整型变量。
  • 现在,我们声明整型指针变量。
  • 声明整型指针变量后,我们将变量“x”的地址存储到指针变量“ptr”中。
  • 我们可以通过解引用指针“ptr”来改变变量“x”的值,如下所示:

上面的代码行将变量“x”的值从9更改为8,因为“ptr”指向“x”的内存位置,并且对“ptr”的解引用,即 *ptr=8 将更新x的值。

让我们结合所有上述步骤

输出

C dereference pointer

让我们看另一个例子。

在上面的代码中

  • 我们声明两个变量“x”和“y”,其中“x”持有值“4”。
  • 我们声明一个指针变量“ptr”。
  • 声明指针变量后,我们将变量“x”的地址赋给指针“ptr”。
  • 正如我们所知,“ptr”包含变量“x”的地址,所以“*ptr”与“x”相同。
  • 我们借助“ptr”变量将“x”的值赋给“y”,即 y=*ptr,而不是使用“x”变量。

注意:根据我们所想,如果改变“x”的值,那么“y”的值也会随之改变,因为指针“ptr”持有“x”变量的地址。但事实并非如此,因为“y”存储的是值“5”的局部副本。

输出

C dereference pointer

让我们考虑另一种情况。

在上面的代码中

  • 首先,我们声明一个变量“a”。
  • 然后我们声明两个指针,即ptr1和ptr2。
  • 两个指针都包含变量“a”的地址。
  • 我们将值“7”赋给 *ptr1,将值“6”赋给 *ptr2。“a”的最终值将是“6”。

注意:如果我们有多个指针指向同一个内存位置,那么一个指针所做的更改将与另一个指针相同。

输出

C dereference pointer