C语言指针
内存和地址
指针的实质就是个变量,它跟普通变量没有任何区别。
指针的出现是为了实现间接访问,在汇编中都有间接访问,其实就是 CPU 寻址方式中的间接寻址。间接访问(CPU 的间接访问)是 CPU 设计时决定的,这个决定了汇编语言必须能够实现间接寻址,又决定了汇编之上的 C 语言也必须实现间接寻址。
间接寻址:意思就是不是通过一个立即数直接找到具体的数据,而是这个数据的地址被放在了一个寄存器中,我们先访问寄存器得到数据的地址,然后再通过得到的地址去访问所需要的数据。这里的寄存器在 C 语言中表现为指针变量,寄存器中的地址在 C 语言中表现为目标数据的地址,然后通过解引用指针变量中的地址来访问目标数据。原来 C 语言实现指针的机制后面是有硬件作为基础的,这才是本质。
值和类型
不能简单地通过检查一个值地位来判断一个数值的类型。为了判断这个值的类型(以及它的值),必须观察程序中使用这个值的方式。
指针变量的内容
变量的值就是分配给这个变量的内存位置所存储的数值,即使是指针变量也不例外。
间接访问操作符
通过一个指针访问它所指向的地址的过程称为间接访问(indirection)或解引用指针&#