导航菜单
首页 >  C语言深入理解指针一篇让你完全搞懂指针  > 【C语言】深入理解指针(一篇让你完全搞懂指针)

【C语言】深入理解指针(一篇让你完全搞懂指针)

一、什么是指针? 1.1指针概念

本质上指针就是地址,口语中所说的指针,其实就是指针变量,指针变量是用来存放地址的一个指针。

 我们知道计算机上CPU(中央处理器)在处理数据的时候,需要的数据是内存中读取的,处理后的数据也会放回内存中。

电脑上内存是8CB/16GB/32GB等,这些内存空间如何高效的管理?

其实就是把内存划分成一个一个的内存单元,每个内存单元的大小取1字节,每个内存单元都有一个编号。

有了内存单元的编号,CPU就可以快速找到一个内存空间。

内存单元的编号 == 地址 == 指针

二、指针变量和地址 2.1 取地址操作符(&)

在C语言中,创建变量其实就是向内存申请空间

【C语言】深入理解指针(一篇让你完全搞懂指针) 第1张

 上述代码创建整型变量a,向内存申请了4个字节,用于存放整数10,其中每个字节都有地址,上图中4个字节地址分别是:

0x00F5FCEC 

0x00F5FCED 

0x00F5FCEE 

0x00F5FCEF

 那我们如何得到a的地址?   

这里就用到取地址操作符(&)

#include int main(){int a = 10;&a;printf("%p\n", &a);return 0;}

 上述代码,运行之后,打印:0x00F5FCEC 

&a取出来的是a所占4个字节中地址最小的字节的地址。

【C语言】深入理解指针(一篇让你完全搞懂指针) 第2张

 2.2 指针变量和解引用操作符(*) 2.2.1 指针变量

我们通过取地址操作符(&)拿到的地址是一个数组,比如:0x00F5FCEC,这个数组有时候需要存储起来,方便后期使用,那我们就可以把地址值存放在指针变量中。

【C语言】深入理解指针(一篇让你完全搞懂指针) 第3张

 总结:变量a和指针变量pa都有各自的地址,只是把变量a的地址存放在指针变量pa里。

 指针变量也是一种变量,这种变量就是用来存放地址的,存放在指针变量中的值都会理解为地址

  2.2.2 解引用操作符(*) #include int main(){int a = 10;int* pa = &a;//取出a地址,并存放在指针变量中//①int说明pa指向的对象是int类型 ②*说明pa是指针变量*pa=100;printf("%d",*pa);return 0;}

 输出:100

①*的作用是引用指针指向的变量值,引用其实就是引用该变量的地址,“解”就是把该地址对应的东西解开,解出来,就像打开一个包裹一样,那就是该变量的值了,所以称为“解引用”。 也就是说,解引用是返回内存地址中对应的对象。

解引用也可以改变该变量的数值。

②需要注意的是,在变量

相关推荐: