动态创建数组了解各种取值和取地址的问题以及感受内存地址
发布时间:2022-11-30 01:32:59 181 相关标签: # eclipse
image.png
源代码:
#define _CRT_SECURE_NO_WARNINGS
#include
#include "cd.h"
//严重性 代码 说明 项目 文件 行 禁止显示状态
//错误 C4996 'scanf': This function or variable may be unsafe.Consider using scanf_s instead.To disable deprecation,
//use _CRT_SECURE_NO_WARNINGS.See online help for details.Project1 c : \users\administrator.desktop - q7dqahs\source\repos\project1\project1\cd.c 7
void arrMemory() {
int len=10000;
int lenTest = 100000;
printf("var len 共有%d个字节,请输入要创建的数组容量\n", sizeof(len));
scanf("%d", &len);
// int* address = calloc(len, sizeof(int));
int* address = calloc(len*sizeof(int));
if (address != NULL) {
int i = 0;
printf("opera start %#x %#x\n", address, address[0]);
for (; i < len; i++) {
address[i] = rand() % 100;//从0-100以内随机
printf(" index %d:address value %d,hex value: %#x address %#x\n", i,address[i], address[i], &address[i]);
}
printf("opera end hexvalue:%#x address: %#x\n value 10进制:%d 16进制:%x 10进制[] %d addressp:%p 星号取值%d", address, &address[0],address, address,address[0],address[0],*address);
//字节输出address则输出的是地址,
}
else {
printf("内存地址申请失败\n");
}
getchar();
getchar();
}
输出结果:
var len 共有4个字节,请输入要创建的数组容量
5
opera start 0xe4c040 0
index 0:address value 41,hex value: 0x29 address 0xe4c040
index 1:address value 67,hex value: 0x43 address 0xe4c044
index 2:address value 34,hex value: 0x22 address 0xe4c048
index 3:address value 0,hex value: 0 address 0xe4c04c
index 4:address value 69,hex value: 0x45 address 0xe4c050
opera end hexvalue:0xe4c040 address: 0xe4c040
value 10进制:14991424 16进制:e4c040 10进制[] 41 addressp:00000029 星号取值41
通过内存监视器直接查看值
首选选择代码行右键断点,我这里断点在getchar()
处,
打开显示内存区域view
image.png
打开显示内存区域view
然后点击运行按钮运行后打开这个控制台程序复制地址粘贴,然后选择任意内存区域右键调整显示方式 为4字节,带符号显示。
image.png
最后验证结果。如下:
image.png
文章来源: https://blog.51cto.com/u_15458814/5882923
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报