指针变量和指针类型的关系解决方法

指针变量和指针类型的关系
最近看了内存映射的文章

看代码,发现一处地方难懂。

它代码中有一句

PShare   :=   PShareMem(MapViewOfFile(MapHandle,   FILE_MAP_ALL_ACCESS,   0,   0,   0));

其中pshare是psharemem类型的变量

单元的接口部分定义了类型
type
      PShareMem   =   ^TShareMem;
      TShareMem   =   record
          Data:   array[0..255]   of   char;
end;

var
    PShare:   PShareMem;

就是这样的

但是我不懂

PShare   :=   PShareMem(MapViewOfFile(MapHandle,   FILE_MAP_ALL_ACCESS,   0,   0,   0));
这一句,为什么要这样?什么用意?

PShareMem()这样算什么呢?这又不是函数,难道指针可以这样?

MapViewOfFile(MapHandle,   FILE_MAP_ALL_ACCESS,   0,   0,   0)返回的是内存地址。

而用指针类型()表示什么?为什么不能直接

PShare   :=MapViewOfFile(MapHandle,   FILE_MAP_ALL_ACCESS,   0,   0,   0);




------解决方案--------------------
PShare := PShareMem(MapViewOfFile(MapHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0));
==================================================================================

PShare是TShareMem类型指针,而MapViewOfFile函数返回的是个无类型指针,为了指针类型匹配,采取强制类型转换PShareMem(),将Pointer转换成PShare.

------解决方案--------------------
PShare本来就是PShareMem类型的嘛
如果不PShare := PShareMem(MapViewOfFile(MapHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0));这样的,类型肯定不匹配的啊