📜  C解引用指针

📅  最后修改于: 2020-10-22 01:44:10             🧑  作者: Mango

C 解引用

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

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

由于以下原因,使用了解引用指针:

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

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

  • 首先,我们声明指针指向的整数变量。
int x =9; 
  • 现在,我们声明整数指针变量。
int *ptr; 
  • 声明整数指针变量后,我们将’x’变量的地址存储到指针变量’ptr’。
ptr=&x;
  • 我们可以通过以下解引用指针’ptr’来更改’x’变量的值:
*ptr =8;

上一行将’x’变量的值从9更改为8,因为’ptr’指向’x’的位置并取消引用’ptr’,即* ptr = 8将更新x的值。

让我们结合以上所有步骤:

#include 
int main()
{
    int x=9;
    int *ptr;
    ptr=&x;
    *ptr=8;
    printf("value of x is : %d", x);
    return 0;}

输出量

让我们考虑另一个例子。

#include 
int main()
{
    int x=4;
    int y;
    int *ptr;
    ptr=&x; 
    y=*ptr;
    *ptr=5;
    printf("The value of x is : %d",x);
    printf("\n The value of y is : %d",y);
    return 0;
}

在上面的代码中:

  • 我们声明两个变量“ x”和“ y”,其中“ x”保持为“ 4″值。
  • 我们声明一个指针变量“ ptr”。
  • 在声明了指针变量之后,我们将’x’变量的地址分配给指针’ptr’。
  • 我们知道’ptr’包含’x’变量的地址,因此’* ptr’与’x’相同。
  • 我们借助“ ptr”变量(即y = * ptr)而不是使用“ x”变量将“ x”的值分配给“ y”。

注意:根据我们的说法,如果我们更改’x’的值,则’y’的值也会更改,因为指针’ptr’持有’x’变量的地址。但这不会发生,因为“ y”存储值“ 5″的本地副本。

输出量

让我们考虑另一种情况。

#include 
int main()
{
   int a=90;
   int *ptr1,*ptr2;
   ptr1=&a;
   ptr2=&a;
   *ptr1=7;
   *ptr2=6;
    printf("The value of a is : %d",a);
    return 0;
}

在上面的代码中:

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

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

输出量