指针 用 数组 的模式 来使用?
指针 用 数组 的形式 来使用??
RT
在 vc里面 有如下用法:
如上面所示,我动态申请了内存,然后 可以用类似这样的形式 pi[x] 来操作内存的值。
而在Delphi中,如下使用时编译不通过的:
我记得 怎么怎么 转换一下之后 就可以 类似C++那样使用。但是就是想不起来怎么弄的了...
求指教 求帮助...
ps : 不要告诉我,自己弄一个数组,然后再 CopyMemory(@Dest[0], pi, sizeof(integer)*5); 然后再用 Dest[x] 来操作 ,我不想用这个方式,这个方式多了一个 复制内存的操作。
psps : 我依稀记得是 先 type Tzz = array[0..0] of integer; 然后 Pzz = ^Tzz; 然后再 var pzz1:Pzz; 然后再 怎么怎么转换一下,就可以 用 pzz1[x] 的形式来操作了,但是 弄了半天弄得都不对,求指点 求指教...
------解决方案--------------------
PIntegerArray(pi)[0] := xxxx
------解决方案--------------------
另外一种写法
function Test:PInteger;
var
pi :PInteger;
arrPi: PIntegerArray absolute pi;
begin
GetMem(pi, sizeof(integer)*5);
arrPi[0] := 11;
end;
------解决方案--------------------
pi^ := 11;
Inc(pi);
pi^ := 22;
...
------解决方案--------------------
动态数组
类型强制转换
RT
在 vc里面 有如下用法:
- C/C++ code
int* Test() { int* pi = new int[5]; pi[0] = 1; pi[1] = 2; pi[2] = 3; pi[3] = 4; pi[4] = 5; return pi; }
如上面所示,我动态申请了内存,然后 可以用类似这样的形式 pi[x] 来操作内存的值。
而在Delphi中,如下使用时编译不通过的:
- Delphi(Pascal) code
function Test:PInteger; var pi :PInteger; begin GetMem(pi, sizeof(integer)*5); pi[0] := 11; end;
我记得 怎么怎么 转换一下之后 就可以 类似C++那样使用。但是就是想不起来怎么弄的了...
求指教 求帮助...
ps : 不要告诉我,自己弄一个数组,然后再 CopyMemory(@Dest[0], pi, sizeof(integer)*5); 然后再用 Dest[x] 来操作 ,我不想用这个方式,这个方式多了一个 复制内存的操作。
psps : 我依稀记得是 先 type Tzz = array[0..0] of integer; 然后 Pzz = ^Tzz; 然后再 var pzz1:Pzz; 然后再 怎么怎么转换一下,就可以 用 pzz1[x] 的形式来操作了,但是 弄了半天弄得都不对,求指点 求指教...
------解决方案--------------------
PIntegerArray(pi)[0] := xxxx
------解决方案--------------------
另外一种写法
function Test:PInteger;
var
pi :PInteger;
arrPi: PIntegerArray absolute pi;
begin
GetMem(pi, sizeof(integer)*5);
arrPi[0] := 11;
end;
------解决方案--------------------
pi^ := 11;
Inc(pi);
pi^ := 22;
...
------解决方案--------------------
动态数组
类型强制转换