C语言基础---2.使用visual studio查看内存中存储数据的方式---入门

1.C语言代码


#include <stdio.h>

int main()
{
	int my_list[10] = { 12, 34, 56, 78 , 89 };

	printf("内存地址为:%p \n", &my_list[0]);		// 打印不同数据存储在内存中的地址
	printf("内存地址为:%p \n", &my_list[1]);
	printf("内存地址为:%p \n", &my_list[2]);
	printf("内存地址为:%p \n", &my_list[3]);
	printf("内存地址为:%p \n", &my_list[4]);
	return 0;

}

  • 数组中的首个元素的地址,即为数组的地址。用这个地址+整个数组占用的内存长度即为整个数组的完成地址信息

2.打开调试界面

准备工作:【工具】-------->【选项】-------->【调试】-------->【常规】-------->勾选【启用地址级调试】(默认开启)
在这里插入图片描述
【调试】-------->【逐语句】
在这里插入图片描述

如上步骤点完,发现整个界面多了窗口,方便调试使用

【调试】-------->【窗口】-------->【内存】-------->【内存1】(任意选择一个内存即可)
在这里插入图片描述

最终,界面又多了一个内存窗口。这里面是不同的内存地址,存储的具体数据(十六进制存储)
在这里插入图片描述

点击【逐语句】按钮

程序会按照一条一条语句,逐步往下运行,点一次运行一条语句

在这里插入图片描述

3.找到十六进制的内存地址,并分析:

  • 逐步执行代码,直到程序把数组的地址打印出来。
  • 根据如下截图,下半部分方框中,打印了数组my_list的地址.
  • 可以右键复制或直接输入到【内存地址】中,注意只输入十六进制地址.然后回车,就能再【内存】对话框中,找到这个地址存储的数据了。
  • 八个比特位存储一个数据信息,从左到右,我们数8位(两两一组,算两个比特位),这样0c 00 00 00,就是我们要的第一个十六进制数据信息

在这里插入图片描述

4. 内存中数据的存储方式?

如上步骤,我们得到了内存中存储的数据是0c 00 00 00,但好像还不是我们希望看到的样子,实际数据是12

  • 内存中,数据的存储其实是倒着存的(这个又涉及大端和小端的问题),电脑上一般是小端,即数据的低位保存在内存的低地址中,数据的高位则保存在内存的高地址中。低地址–>>低数据 。
  • 详情可参考:https://blog.csdn.net/duchenlong/article/details/101539348
  • 那最终我们看到的数据再倒过来,即00 00 00 0c 这个才是它本来的面目,十六进制中,c代表12,即我们保存的数据为12
  • 不同进制数据的对照表,参考:https://blog.csdn.net/chenmozhe22/article/details/89035462

在这里插入图片描述

5.内存中数据地址的高位、低位?

在这里插入图片描述

在继续往下执行几个语句,发现前面几个数据的存储地址依次为:
12-----0x012FFDA4
34-----0x012FFDA8
56-----0x012FFDAC
78-----0x012FFDB0

如上地址中,内存地址数值越来越大,我们叫高位地址

如上的地址,每个地址间隔是4个大小(因为两两分组,占8个比特位)信息都是按照(1字节=8比特位)存储的
在这里插入图片描述

十进制-----十六进制对照表

12-----00 00 00 0c
34-----00 00 00 22
56-----00 00 00 38
78-----00 00 00 4e

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello-alien

您的鼓励,是我最大的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值