地址运算符和汇编中的指针之间有区别吗?

问题描述

编译器翻译地址运算符与指针有何不同吗?

我想知道是因为反编译器有时会向我显示:

func_test(&a,&b[0x32*ebx])

应与

基本相同
func_test((_DWORD *)a,(_DWORD *)(b+0x32*ebx))

正确吗?我对算术tbh感到困惑。 以这种方式显示它是否有任何特殊的含义,或者仅仅是为了使其易于阅读?

解决方法

&a返回a的地址,而(_DWORD *)a强制编译器将a的内容重新解释为指向_DWORD的指针。所以这两种表达方式根本不同。

如果a_DWORD的数组(类似于_DWORD a[A_LENGTH];声明),则可能等效。在这种情况下,&aa与指针上下文中的a本质上是相同的,尽管_DWORD *强制转换是多余的。

b的表达式是等效的。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...