
C语言指针指向一个内存地址
main(){int*p=(int*)0X22FF74;//指向内存地址//22FF74是我的另一个在运行程序中的一个变量地址,里面存放整数1000printf("%d"...
main()
{
int *p=(int*)0X22FF74; //指向内存地址
//22FF74是我的另一个在运行程序中的一个变量地址,里面存放整数1000
printf("%d",*p); //输出*p的内容
}
为什么输出的却是2293620(十六进制22FF74),能不能把22FF74地址里的数据输出? 展开
{
int *p=(int*)0X22FF74; //指向内存地址
//22FF74是我的另一个在运行程序中的一个变量地址,里面存放整数1000
printf("%d",*p); //输出*p的内容
}
为什么输出的却是2293620(十六进制22FF74),能不能把22FF74地址里的数据输出? 展开
展开全部
不管怎么说,你视图通过这个方法得到“另一个程序”这个内存地址的值是不可能的,因为现代操作系统每个进程的内存空间不是共享的,也就是这个程序的某个地址和另一个程序的同一个地址不是一回事,所以你这么操作是没有意义的,而且很容易导致访问违规。
如果你企图读取另一个进程某个地址的值,必须要通过Windows API函数ReadProcessMemory来实现,他的第一个参数就是指定进程句柄,你必须告诉他你要读哪个进程的内存,第二个参数是地址。具体可以到MSDN看http://msdn.microsoft.com/en-us/library/ms680553(v=vs.85).aspx。
如果你企图读取另一个进程某个地址的值,必须要通过Windows API函数ReadProcessMemory来实现,他的第一个参数就是指定进程句柄,你必须告诉他你要读哪个进程的内存,第二个参数是地址。具体可以到MSDN看http://msdn.microsoft.com/en-us/library/ms680553(v=vs.85).aspx。
展开全部
指针变量p中不能赋具体的内存地址,如果你想把变量1000的地址赋给p的话应写成int a=1000;p=&a;必须借助变量a的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-04-03
展开全部
int* p=0x22ff74;即可,不用做强制类型变换。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*p就是地址吧···
不过···确实不能那么赋值!什么跟什么嘛~
不过···确实不能那么赋值!什么跟什么嘛~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |