C语言指针,如何通过指针变量,访问指向的变量?linux C第36讲

指针变量访问指向变量

通过前面的学习,我们知道把变量的地址存放到指针变量中了,让指针变量指向某个变量。例如:

int a; //定义int类型的变量a;

int *p3; //定义指针变量p3,它是 int* 类型,存放int类型变量的地址;

p3 = &a; //把变量a的地址赋给指针变量p3,指针变量p3指向变量a;

此时,p3指针变量存放了变量a的地址,那么,怎么样通过p3指针变量访问变量a,获取变量a的数据?

在C语言中提供了“指针取值运算符*”,就是在指针变量前面加上指针取值运算符*,就是对指针变量进行“降级”,变成指针变量所指向的变量。注意:指针取值运算符*,我们也称为:指针降级运算符。

例如指针变量p3指向变量a,那么,*p3就是对指针变量p3进行“降级”,变成指针变量p3所指向的变量。那么,指针变量p3指向变量a;所以,*p3就变成了变量a;所以,有如下图:


所以,可以通过“指针取值运算符*”,对指针变量进行降级,转换成指针变量所指向的变量。程序测试例子如下:

程序运行结果如下:

可以看到,我们定义了变量a,取出变量a的地址,赋给指针变量pa;那么,指针变量pa就指向了变量a。

然后,再通过指针取值运算符“*”,对指针变量pa进行降级,把*pa转换成指针变量pa所指向的变量a。

那么,*pa就是变量a;所以,执行 a1 = *pa; 就是把变量a的值赋给变量a1;最终,发现变量a1存放的数据,就是变量a存放的数据。

经过本节课的学习,我们知道了指针变量的定义和使用,那么,可以总结以下几点:

(1) 指针变量就是一个变量,它有自己的存储空间;

(2) 指针变量的存储空间,存放的是某个变量的地址;例如:

int a;

char* pa = &a;

那么,指针变量pa的存储空间,存放了变量a的地址。此时,称指针变量pa指向变量a;

(3) 通过“指针取值运算符*”可以对指针变量进行“降级”,把指针变量转换为它所指向的变量;例如:

int a;

char* pa = &a;

*pa = 'A';

那么,*pa表达式就表示指针变量pa所指向的变量a,最终,就是给变量a赋值'A'字符。

原文链接:,转发请注明来源!