PDWORD(@buffer[18])^:=col; ^是什么意思?

解决方案 »

  1.   

    xiexie!
    上面那句翻译成c就是 buffer[18]=col; 否?
      

  2.   

    PDWORD(@buffer[18])^:=col先取出buffer[18]的地址,然后进行强制类型转换,最后将这个地址中的量取出,并将这个量的值设置为col其中的^表示的是取指针内容的意思,实际上就是解除指针的引用,对于一个指针,解除指针的引用在C中的语法是:(*Ptr)
         在OP中的语法是:Ptr^
      

  3.   

    贴完整点var col: DWORD;
    buffer: array[0..255]of char;
    begin
    PDWORD(@buffer[18])^:=col;
    end;我再请教2个问题,DELPHI里指针长度是否固定为DWORD,PDWORD(@buffer[18])^:=col;既然是对量俯值那会不会丢失精度?
      

  4.   

    还有DELPHI的
    PDWORD(@buffer[18])^:=col;和C的
    *(buffer+18)=col; 是不是一个意思?
      

  5.   

    DELPHI中所有指针的长度都是4字节的32位!应该不会丢失精度,你要知道
    pdword(@buffer[18])这是一个指针啊 ,只有对指针才能使用^运算符哦。
    你这里不应该考虑精度丢失的问题,因为这和指针的长度没有关系,如果指针中保存的地址值是1000,而在内存中1000这个位置上的值将被赋予col这个值。至于C中的表示方法,我记忆的不太清楚了,不敢枉下结论,你最好看看资料