多重指针内存地址

例子

#include<iostream>

int main()
{
	char* buffer = new char[10];//创建char类型的指针数组
	memset(buffer, 0, 10);		//初始化为0
	char** ptr = &buffer;		//创建二重指针并指向一个指针 

	std::cin.get();
}

内存结构

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210613182637182.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NkcmVhbWZseQ==,size_16,color_FFFFFF,t_70)

从图中我们可以看到创建的指针buffer内存地址为0x00b8f1e8且内存中都被初始化为0.
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210613182815663.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NkcmVhbWZseQ,size_16,color_FFFFFF,t_70)
这时已经执行了创建二重指针的代码并指向的一个指针,从图中可以看出二重指针的内存地址为0x009ffd7c,而这段地址存储的是e8 f1 b8 00,由于计算机中字节存储顺序,我们把它归正变成了00b8f1e8,这正是buffer的内存地址。
![在这里插入图片描述]( https://img-blog.csdnimg.cn/2021061318380295.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NkcmVhbWZseQ
,size_16,color_FFFFFF,t_70)

结论

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20210613184523776.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NkcmVhbWZseQ==,size_16,color_FFFFFF,t_70)
从上实验可以推论三重指针地址为0x00aff9e0,而这段地址内存存储的为 ec f9 af 00就是二重指针地址。而指针只是存储内存地址的整数

posted @ 2021-06-13 18:54  放飞梦想C  阅读(114)  评论(0)    收藏  举报