关于指针的理解

指针与汇编语言之间的联系

  1. 指针的本质

指针是C语言中一个比较重要的概念。要理解指针,我们先理解以下变量的概念。变量就是C语言对计算机内部某一块内存空间的命名。显然这个变量名机器本身是不认识的,也是无意义的,但是变量名可以作为一个标签,帮助我们定义和使用这块地址。举个例子:
在计算机中,如果CPU想要存储一个数据,它会怎么实现呢?看下图:这里写图片描述

DB:数据总线 AB:地址总线 CB:控制总线

假设该存储器拥有10个字节的内存单元,那么它可以寻址10个存储空间。如果我要在内存地址为06的地址里面存储100这个数,那么首先,计算机会通过地址总线锁定60这个地址,然后将100这个数送至数据总线,最后通过控制总线将数据进行锁存。代码实现:
C语言:

int a=100

汇编:

MOV [06],100

也就是说a其实相当于一个标签,用来代替地址06,作用是便于我们记忆,使用,区分。而&a就相当于把这个标签所对应的地址取出来(06)。

指针在C语言里的理解是存储地址的变量,那么其实它就是一个变量,只是存储的位置跟存储的内容比较特殊,假设上图中我们定义10地址为指针变量存储区,那么我们可以把a的地址06存储到里面。代码:

int *p=&a

定义了一个指针变量P,P的地址是10,P里存储的是地址06,这个06地址里面存储的数据时100。

猜你喜欢

转载自blog.csdn.net/whynat/article/details/82528796
今日推荐