C语言:初识指针

时间:2023-01-07 17:58:21

1.内存

认识指针,首先要认识内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的,所以为了有效的使用内存,就把内存分成一个个小的内存单元,每个内存单元的大小是1个字节(byte),为了能够有效的访问到内存的每一个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址,地址即是C语言中的指针

那么问题来了,怎么给内存进行编号

其实在32位操作的机器上,有32根通电的地址线(64位就有64根),通电之后产生高电(1)和低电(0),C语言:初识指针 

2^32byte = 4,294,967,296byte = 4,194,304KB= 4,096MB=4GB(4个G差不多就是一块内存的大小,当然也可以更大)

这样就有了2^32次方个不同的值,从而用来对内存单元进行编号,但是2进制表示地址过于复杂,所以就用16进制来表示

那如果我现在初始化整型 a =10,占4个字节,有4个地址,是4个都作为 a 的地址还是选择一个作为地址呢?如果选一个,又应该选择哪一个呢?

C语言:初识指针 

这时,我们按F10调试,再在 调试 - 窗口 中找到 内存 ,在将地址改为 &a,回车 ,再按F11一直过定义 a 的那一行,得到下图:C语言:初识指针

00000000  00000000  00000000  00001010  (2进制)

0x 00  00  00  0a (16进制)

//因为是16进制,所以 a 就等于10

所以由图可知,地址取的是最小的那个,即0x0133FB08

2.指针

知道了地址后,我们就可以引入指针了,请看下面的代码:

C语言:初识指针

&:取地址操作符 

*:解引用操作符     

我们取变量 a 的地址,将它放在变量 pa 中,pa 的类型为int* ,int 说明 pa 指向的 a 是 int 类型的,*则说明 pa 是指针变量,再用解引用操作符,通过 pa 找到 pa 指向的 a ,pa ​就是 a 再将20存入*pa中,ctrl+F5后,打印出来结果为20

C语言:初识指针


//这是利用指针来修改变量 a 的值,也是指针最最基本的内容

现在是不是觉得指针也没有那么可怕了?C语言:初识指针

但是无论如何,指针都是一个很重要的知识,我们以后还是要去认真地学习它