C语言教程-C语言中的解引用指针
正如我们已经了解的那样,“指针是一个变量,用于存储另一个变量的内存地址”。解引用操作符,也称为间接操作符,用于表示指针变量的解引用操作。当我们对指针进行解引用时,将返回指针所指向的变量的值。
为什么使用解引用指针?
解引用指针用于以下几个原因:
- 它可以用于访问或操作指针所指向的内存位置中存储的数据。
- 对解引用指针应用的任何操作都将直接影响它所指向的变量的值。
让我们观察下面的步骤来进行指针的解引用:
- 首先,我们声明一个整型变量,指针将指向该变量。
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;
}
输出:
让我们看另一个例子:
#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'的局部副本。
输出:
让我们看另一种情况:
#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'。
注意:如果有多个指针指向同一位置,那么一个指针所做的更改将影响另一个指针。
输出: