
强制转换成指针类型并赋值
这句*((ULONG*)OldNtReadMemory)=MyNtReadMemory;和这句(ULONG*)OldNtReadMemory=MyNtReadMemory...
这句*((ULONG*)OldNtReadMemory)=MyNtReadMemory;
和这句
(ULONG*)OldNtReadMemory=MyNtReadMemory;有什么不同
这样(ULONG*)不就已经强制转换成指针了吗?为什么前一句用到两个*号。 展开
和这句
(ULONG*)OldNtReadMemory=MyNtReadMemory;有什么不同
这样(ULONG*)不就已经强制转换成指针了吗?为什么前一句用到两个*号。 展开
3个回答
展开全部
因为
MyNtReadMemory和 ULONG是一个层次的数据。
如果使用
(ULONG*)OldNtReadMemory就是将MyNtReadMemory赋给ULONG*类型的指针,指针名字为
OldNtReadMemory。
但是这个时候MyNtReadMemory就是把它的值当成地址赋给OldNtReadMemory。
利用OldNtReadMemory找到的不在MyNtReadMemory;而是MyNtReadMemory作为地址指向的内存空间。
你这里单独提出疑问,我这样解释,你不一定能听得懂,你可以联系一下后续代码的使用。
而且一般情况下可能不是你那样的用法,一般会是
ULONG a;
a=*(ULONG*)b;
MyNtReadMemory和 ULONG是一个层次的数据。
如果使用
(ULONG*)OldNtReadMemory就是将MyNtReadMemory赋给ULONG*类型的指针,指针名字为
OldNtReadMemory。
但是这个时候MyNtReadMemory就是把它的值当成地址赋给OldNtReadMemory。
利用OldNtReadMemory找到的不在MyNtReadMemory;而是MyNtReadMemory作为地址指向的内存空间。
你这里单独提出疑问,我这样解释,你不一定能听得懂,你可以联系一下后续代码的使用。
而且一般情况下可能不是你那样的用法,一般会是
ULONG a;
a=*(ULONG*)b;
展开全部
*((ULONG*)OldNtReadMemory)=MyNtReadMemory
是将OldNtReadMemory指向的内存的值赋值为MyNtReadMemory
但OldNtReadMemory的值没变;
而 (ULONG*)OldNtReadMemory=MyNtReadMemory
是将OldNtReadMemory的值赋值为MyNtReadMemory
OldNtReadMemory改变了;
是将OldNtReadMemory指向的内存的值赋值为MyNtReadMemory
但OldNtReadMemory的值没变;
而 (ULONG*)OldNtReadMemory=MyNtReadMemory
是将OldNtReadMemory的值赋值为MyNtReadMemory
OldNtReadMemory改变了;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*((ULONG*)OldNtReadMemory)=MyNtReadMemory; // 是取OldNtReadMemory所存储的数据,将数据赋值为MyNtReadMemory
(ULONG*)OldNtReadMemory=MyNtReadMemory // 是取地址,OldNtReadMemory表示ULONG型指针,将此指针赋值为MyNtReadMemory
我教你一个门路,可以把括号去掉来看。 强制转换类型不过是语言对安全性的一个考虑而已
(ULONG*)OldNtReadMemory=MyNtReadMemory // 是取地址,OldNtReadMemory表示ULONG型指针,将此指针赋值为MyNtReadMemory
我教你一个门路,可以把括号去掉来看。 强制转换类型不过是语言对安全性的一个考虑而已
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询