c/c++数组与指针的实质体现(vs调试内存举例说明)

借助调试工具(vs)查看内存,vs查看方法:设置断点,调试–>窗口–>内存–>内存1

加入断点,在内存地址栏输入&elements,发现&elements=0x008FF76C,数组赋值循环执行完后,该处保存的正是0800,0800,0800,也就是elements数组真正保存的内容,所以&数组名(&elements=0x008FF76C)0x008FF76C就是数组真正内容(0800,0800,0800)保存的地方。

在这里插入图片描述
再换成指针,发现&elements=0x008BFAF0,而里面保存的内容是0x00EABC,然后在地址栏输入0x00EABC,发现就转到了真正的数组内容。
在这里插入图片描述
在这里插入图片描述
简单总结一下:

1.第一个示例int elements[] ,&elements是保存指向数组内容的地址(记作add1),也就是指向数组的指针,查看这个地址也就看到数组的内容,也就是由add1(数组内容的地址)得到数组内容。
2.第二个实例int *elements,本身就是保存指向数组内容的地址(记为add1),add1本身也是一串数字,&elements只是得到add1这串地址数字的储存地址(即为add2),也可以叫做二重指针,所以我们可以由add2(add1的地址)得到add1,然后由add1(数组内容的地址)得到数组内容。

再简单总结下:
指针本身就是一串数字(0xABCDEFGH),这串数字就是指向内容的索引(类似书本页码与书内容的关系。总之,指针这个概念最好可以自己动手举例子在内存地址亲自慢慢感悟,不宜过度解读容易带偏(^_^)。

发布了17 篇原创文章 · 获赞 15 · 访问量 1868

猜你喜欢

转载自blog.csdn.net/weixin_43723614/article/details/104983858