动态创建数组了解各种取值和取地址的问题以及感受内存地址

image.png

源代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容