有个符号不明白什么意思

liuhaochuan 2003-03-16 08:53:35
PDWORD(@buffer[18])^:=col;

^是什么意思?
...全文
12 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
FrameSniper 2003-03-16
DELPHI中所有指针的长度都是4字节的32位!

应该不会丢失精度,你要知道
pdword(@buffer[18])这是一个指针啊 ,只有对指针才能使用^运算符哦。
你这里不应该考虑精度丢失的问题,因为这和指针的长度没有关系,如果指针中保存的地址值是1000,而在内存中1000这个位置上的值将被赋予col这个值。

至于C中的表示方法,我记忆的不太清楚了,不敢枉下结论,你最好看看资料
回复
liuhaochuan 2003-03-16
不对吧,你们好象说错了,那应该不是俯值而是俯地址。
回复
liuhaochuan 2003-03-16
还有

DELPHI的
PDWORD(@buffer[18])^:=col;

和C的
*(buffer+18)=col;

是不是一个意思?
回复
liuhaochuan 2003-03-16
贴完整点

var col: DWORD;
buffer: array[0..255]of char;
begin
PDWORD(@buffer[18])^:=col;
end;

我再请教2个问题,DELPHI里指针长度是否固定为DWORD,PDWORD(@buffer[18])^:=col;既然是对量俯值那会不会丢失精度?
回复
FrameSniper 2003-03-16
PDWORD(@buffer[18])^:=col

先取出buffer[18]的地址,然后进行强制类型转换,最后将这个地址中的量取出,并将这个量的值设置为col

其中的^表示的是取指针内容的意思,实际上就是解除指针的引用,对于一个指针,解除指针的引用在C中的语法是:(*Ptr)
在OP中的语法是:Ptr^
回复
liuhaochuan 2003-03-16
xiexie!
上面那句翻译成c就是 buffer[18]=col; 否?
回复
Eastunfail 2003-03-16
相当于 C/C++的*
回复
相关推荐
发帖
Delphi
创建于2007-08-02

4893

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2003-03-16 08:53
社区公告
暂无公告