问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在C语言中如果已经知道了一个数据的内存地址,怎样直接从内存中读取出该数据?

发布网友 发布时间:2022-05-22 08:03

我来回答

5个回答

热心网友 时间:2024-03-07 12:18

要读取内存数据的话,只能通过指针,你只能通过自己定义一个int的指针,让他指向一个内存地址,然后通过*指针的形式读出来。
你说的“我不想通过指针变量来直接输出该int数据的值,而是想直接读取内存的数据,看看和我定义的int数据值是否相同。”是没意义的,就好像你要确定我这个人是不是我这个人一样,如果你一定要写的话,可以写成这样。
#include<stdio.h>
int main()
{
int a=123,b=1234567;
int adda=&a,addb=&b;
int *m,*n;
m=adda;
n=addb;
//printf("*m=%d\t,*n=%d\n",*m,*n); //这里不用指针变量直接输出int数据
printf("m=%d\t,n=%d\n",a,b);
return 0;
}
这里的m和n已经和a,b没有任何逻辑联系了,他们只是表示两个内存段的数据而已。
再明确点可以写成
#include<stdio.h>
int main()
{
int a=123,b=1234567;
int adda=&a,addb=&b;//adda和addb仅仅表示两个内存地址
int contenta,contentb;
contenta=*adda;
contentb=*addb;//这两句的含义是两个内存地址里面的内容,他们和变量a,b没有逻辑关系
//printf("*m=%d\t,*n=%d\n",contenta,contentb); //这里不用指针变量直接输出int数据
printf("m=%d\t,n=%d\n",a,b);
return 0;
}
这里就是你说的比较a以及a所在的内存块(adda)里面内容是不是和a相等

热心网友 时间:2024-03-07 12:18

#include <stdio.h>
#include <string.h>

void main()
{
int *p;
int i=10;

p=(int*)0x0012ff78;//i的地址
printf("%d\n",*p);

}
输出的结果为10,你先调试下,可以知道i的地址
*P等价于*(int*)0x0012ff78

热心网友 时间:2024-03-07 12:19

#include<stdio.h>
int main()
{
int a=123,b=1234567;
int *m,*n;
m=&a;
n=&b;
printf("*m=%d\t,*n=%d\n",*m,*n);//打印指针指向的值
printf("m=%d\t,n=%d\n",m,n);//打印指针内存地址对应的十进制数,因为过大,会显示为一个 负数
printf("m=%p\t,n=%p\n",m,n);//打印指针类型的数据,即指针本身的地址
getch();
return 0;
}

输出的结果是:

*m=123 ,*n=-10617
m=-54 ,n=-52
m=FFCA ,n=FFCC

可以看到,b的值已经不是1234567,因为定义的b是个2个字节的,最大是65536,再大的数就会溢出,然后显示为负数的,同理,FFCA,FFCC也是过大,所以,m,n对应的十进制也是负数。追问我这里没有出错:
*m=123 , *n=1234567
m=2293620 ,n=2293616
int 好像占4个字节

追答对了,不同的平台可能int的字节大小也不一定的,与平台有关,平时开发,用的是size_t类型的。

热心网友 时间:2024-03-07 12:19

调试,vc6 有调试功能,就是加一个断点,再点击调试图标,不是感叹号,调到你想看的那句后,工作空间下边有两个窗口,右边的那个有左右两排网格,在左边输入你的变量或地址,右边会自动显示对应的值,大致就是这样,如果有错的话,你自己试试

热心网友 时间:2024-03-07 12:20

*和&是一对相反意义的运算符,一个取值(仅连地址量),一个取地址(仅连变量)。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦幻西游怎样查看自己怎么加的属性点阿? 我好长时间没玩了 .. 怎么... 梦幻西游怎么查看我各项加了多少点 卤肉料的配方 卤肉上色最好的配方前十 三国中曹操有几个儿子 曹植的意思是什么 曹操有多少个儿子?其中姓名叫什么? 简谱中1=c2/4是什么意思?别说几节几拍我不知道节和拍是什么意思 简谱四分之二什么意思 ...是鸡膏吗 放在老汤里行吗 怎么才能容于水 谢谢 怎么使用? 内存一数据区域的起始地址 电影你好李焕英贾文田谁演的 岳云鹏参演你好李焕英了嘛 张小斐凭借《你好李焕英》获最佳女主角,她在这部电影中饰演什么样的角色? 更新显卡后dll文件缺失 如何更新dll文件库 在C#中 string s1=d1.ToLongDateString(); 这是什么意思? 百度卫士怎么样修复dll 百度卫士怎么修复dll 百度卫士修复dll文件方法 化学周期表中第ⅥB中价层电子式3d54s1 为什么是d区? 三菱plc的pid指令s1+1怎么写入进去, PLC中(S1+1, S1)是代表什么意思 大众汽车仪表盘档位显示不是显示D1而是显示51是什么问题? 魔兽世界LR70装备问题?SI S3 D1之类代码什么意思 s1d变压器是铜芯吗? verilog 问题,在线等 16进制B000转化为10进制数为多少 ?最好有步骤 谢谢 百家养生堂的桂白茴阳和黄龙大承是真的吗 我想知道在生理期期间能不能继续服用同仁养生堂里的保健品 ...有三高和心脑供血不足的疾病,今在电视上看养生堂的节目 内存单元的数据和内存单元的地址有什么不同?什么叫从内存读数据,什么叫想内存写数据? 如何判断哪些数值是否是内存地址 请问地址、变量、数据、内存单位、变量单位,,这些名词有什么关系? VB 怎么获得数据所在内存地址~并监视数据~ 数据结构数组存储地址的问题? 农村医保城镇医保职工医保有什么区别 2020款昂克赛拉的215/45R18轮胎怎么样?? 215/45/18的轮胎什么车用的 原车配轮胎215/45/r18 ,换成225/45/r18轮胎,胎压应该打多少? 有什么很方便云储存的写作软件?云笔记什么的也行啊! 昂拉塞拉1.5手动轮胎是多大的 轮胎型号215/55 r17和215/45 r18有什么区别 昂克赛拉2.0旗舰 215/45 R18 可以更换成米其林PS3 225/45 R18吗 昂克赛拉,215/45R18轮胎可以换成215/55R18吗? 飞思的轮胎是什么牌子 215/45R18可以换成225/45R18吗? 米其林 有215 45r18的轮胎吗? 带压燃的马自达3和CX-30要来了,22马力等了6年值得吗? 作为一名军人身体素质得有多好? 军人身体素质到底多好