对指针变量取地址得到的是指针变量本身的地址
指针和指针变量不同,指针是地址,而指针变量是存储地址的变量
用一个例子说明:
#include <stdio.h>
int main() {
int *p;
int i=0;
p=&i;
return 0;
}
(1)通过调试,程序走到 int *p;这一步,我们先看一下指针变量p自己本身的地址,下图中【1】处便是指针变量p自己本身的地址,【2】处是指针变量p被分配的存储单元,用来存放其他数据的地址
注:一个存储单元可以存储一个字节,也就是8个二进制位
(2)当程序走到 int i=0; 这一步时,我们看一下&i,下图中【1】处便是 i 的地址,【2】处是 i 被分配的存储单元,用来存放其他数据
(3)当程序走到 p=&i; 这一步时,可以看到指针变量p中的内容发生改变,其实就是上面 i 的地址0x000000000061fe14,如下图所示:
注:14fe6100 00000000是小端存储模式,即低字节在前,高字节在后