| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 447 人关注过本帖
标题:ptr byte=dword ? 求高手指教
只看楼主 加入收藏
爱末流
Rank: 2
等 级:论坛游民
帖 子:101
专家分:16
注 册:2011-6-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
ptr byte=dword ? 求高手指教
如题:ptr byte=dword ? 求高手指教

 ;函数声明原型
MSG_BOX PROTO out_pbuffer:ptr byte,out_size:dword,t_size:dword

out_pbuffer:ptr byte 第一个参数是字节指针类型。 而我改成DWORD后,  用addr 字符串变量的地址传入。  在OD下反汇编看都是一样。

有些API函数需要传入字符串指针的。而且在WIN32汇编下一般被定义成了 dword 用来存放32位指针。  而我改成ptr byte 也等价的。
都是 PUSH 压入地址

我想问的是从直观的角度来看ptr byte 是否就是DWORD(API函数下的 需要传入地址的那种)



 


搜索更多相关主题的帖子: 字符串 
2012-08-10 23:37
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:10 
out_pbuffer:ptr byte
我赶脚吧,看名字就知道是个输出缓冲区指针,PTR是指针 byte是字节型的缓冲区。
有点迷惑 是ptr byte还是byte ptr
2012-08-10 23:53
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
ptr类似于指针 你就当成 int *a 里面那个*就可以

因为是32位汇编 指针是32位 所以 你的理解是对的
2012-08-11 00:02
爱末流
Rank: 2
等 级:论坛游民
帖 子:101
专家分:16
注 册:2011-6-3
收藏
得分:0 
回复 3楼 zklhp
在高级语言里面限制的很厉害,而在汇编里面就自由多了。比如 DWORD 变量就可以接受任何的32位指针类型。在API函数调用的时候就直接将该变量入栈了。就是地址入栈了
最终API函数会引用这个地址。
而在C++ 里面要传指针,就必须声明接受的参数类型也就是对应该指针类型。 你貌似不能传入指针的时候,用 int 32位变量来接受传入的地址。
而在汇编里面就非常自由,一个DOWRD貌似可以接受任何类型变量的地址。在C++里面就必须声明和变量地址相同类型的指针来接受地址。
2012-08-11 15:45
水哥
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:65
专家分:111
注 册:2012-8-11
收藏
得分:0 
PTR只是个强制声明的伪指令而已,相当于C语言里 (* char)var而以,但不应该在函数原型声明里用PTR
2012-08-13 11:15
快速回复:ptr byte=dword ? 求高手指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019444 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved