有个符号不明白什么意思

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

^是什么意思?
...全文
44 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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++的*

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧