发新话题
打印

[语言基础/算法] 类型强制转换解说(以指针类型为例)

类型强制转换解说(以指针类型为例)

以下为提问内容(CSDN)


最近看了内存映射的文章

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

它代码中有一句

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.

数据类型()这种格式是delphi的强制类型转换形式

妖城欢迎您!

TOP

如果不强制转换类型,将会导致指针类型不匹配
妖城欢迎您!

TOP

发新话题