首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

指针 用 数组 的方式 来使用?

2013-01-11 
指针 用 数组 的形式 来使用??RT在 vc里面 有如下用法:int* Test(){int* pi new int[5]pi[0] 1pi[1]

指针 用 数组 的形式 来使用??
RT
在 vc里面 有如下用法:


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中,如下使用时编译不通过的:

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;
...
[解决办法]
动态数组
类型强制转换

热点排行