指针的本质

来源:互联网 发布:网络鸡腿是什么意思 编辑:程序博客网 时间:2024/05/17 07:12

这里写图片描述

如图所示:定义了一个int类型变量i,接着又定义了int类型的指针p,将变量i取地址赋值给了我指针变量p;我们程序是这样子写的,那么我们电脑的内存是怎么储存的呢?
如图所示:int类型的变量i,占用了内存地址0x9000-0x9003的内存,共四个字节,根据小端存储法,0x9000存储数值低字节数据0x03,0x9001-0x9003各存储了0x00。指针p变量是存储变量i的首地址的,指针p占用了内存中0x8000-0x8003的内存,保存的值就是变量i的首地址0x9000,占用了四个字节。

这里写图片描述

如图所示:定义了一个char类型的变量ch,将其取值赋值给了char类型指针变量q,在内存中,char类型变量占用1个字节,如图例,ch占用了0x1100内存地址,指针变量q占用了四个字节内存,地址为0x10000-0x10003,q中保存的是ch的内存首地址0x1100。

这里写图片描述

如图所示:根据以上分析得出,char *p1,sizeof(p)中为1个字节,sizeof(*p)中为4个字节;short *p2,sizeof(p)中为2个字节,sizeof(*p)中为4个字节;int *p3,sizeof(p)中为4个字节,sizeof(*p)中为4个字节。