指针变量和指针类型的关系解决方法
指针变量和指针类型的关系
最近看了内存映射的文章
看代码,发现一处地方难懂。
它代码中有一句
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));这样的,类型肯定不匹配的啊
最近看了内存映射的文章
看代码,发现一处地方难懂。
它代码中有一句
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));这样的,类型肯定不匹配的啊