正如我们已经了解的那样,“指针是一个变量,用于存储另一个变量的内存地址”。解引用操作符,也称为间接操作符,用于表示指针变量的解引用操作。当我们对指针进行解引用时,将返回指针所指向的变量的值。

为什么使用解引用指针?

解引用指针用于以下几个原因:

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

让我们观察下面的步骤来进行指针的解引用:

  • 首先,我们声明一个整型变量,指针将指向该变量。
int x = 9;
  • 然后,我们声明一个整型指针变量。
int *ptr;
  • 在整型指针变量的声明之后,我们将'x'变量的地址存储到指针变量'ptr'中。
ptr = &x;
  • 我们可以通过对指针'ptr'进行解引用来更改'x'变量的值,如下所示:
*ptr = 8;

上述代码将将'x'变量的值从9更改为8,因为'ptr'指向'x'的位置,对'ptr'进行解引用,即*ptr = 8将更新'x'的值。

让我们将上述所有步骤结合起来:

#include <stdio.h>

int main() {
  int x = 9;
  int *ptr;
  ptr = &x;
  *ptr = 8;
  printf("x的值为:%d", x);
  return 0;
}

输出:

1.png

让我们看另一个例子:

#include <stdio.h>

int main() {
  int x = 4;
  int y;
  int *ptr;
  ptr = &x;
  y = *ptr;
  *ptr = 5;
  printf("x的值为:%d\n", x);
  printf("y的值为:%d\n", y);
  return 0;
}

在上面的代码中:

  • 我们声明了两个变量'x'和'y',其中'x'存储了值'4'。
  • 我们声明了一个指针变量'ptr'。
  • 在声明指针变量后,我们使用指针'ptr'将'x'变量的地址赋值给'y',即y = *ptr,而不是使用'x'变量。

注意:根据我们的理解,如果我们更改'x'的值,那么'y'的值也会随之更改,因为指针'ptr'保存了'x'变量的地址。但事实并非如此,因为'y'存储的是值'5'的局部副本。

输出:

2.png

让我们看另一种情况:

#include <stdio.h>

int main() {
  int a = 90;
  int *ptr1, *ptr2;
  ptr1 = &a;
  ptr2 = &a;
  *ptr1 = 7;
  *ptr2 = 6;
  printf("a的值为:%d\n", a);
  return 0;
}

在上述代码中:

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

注意:如果有多个指针指向同一位置,那么一个指针所做的更改将影响另一个指针。

输出:

3.png

标签: c语言, c语言教程, c语言技术, c语言学习, c语言学习教程, c语言下载, c语言开发, c语言入门教程, c语言进阶教程, c语言高级教程, c语言面试题, c语言笔试题, c语言编程思想