既可以是RECORD 又同时是ARRAY解决思路
既可以是RECORD 又同时是ARRAY
工作中遇到问题,一个指针指向一个RECORD,但是从业务上看是一个List,我很疑惑,难道可以同时是RECORD又是ARRAY嘛?
在线等,,我是初学者。。刚接触DELPHI
------解决方案--------------------
工作中遇到问题,一个指针指向一个RECORD,但是从业务上看是一个List,我很疑惑,难道可以同时是RECORD又是ARRAY嘛?
在线等,,我是初学者。。刚接触DELPHI
------解决方案--------------------
- Delphi(Pascal) code
var p: PPoint; i: Integer; buf: array[0..255] of Char; type ArrPoint = array of TPoint; {用于转换的自定义类型} begin p := GetMemory(4 * SizeOf(TPoint)); for i := 0 to 3 do begin ArrPoint(p)[i].X := i; ArrPoint(p)[i].Y := i * i; end; wvsprintf(buf, '%d,%d; %d,%d; %d,%d; %d,%d', PChar(p)); ShowMessage(buf); {0,0; 1,1; 2,4; 3,9} FreeMemory(p); end;
------解决方案--------------------
实际上就是数组的类型是指针,而这个指针指向Record罢了。很常用!也很实用!呵呵!
就像楼上所写的一样!
//结构体
MyData = Record
MyID:string;
MyName:string;
end;
PData = ^MyData; //指向结构体的指针PData
//定义数组
ary : array of PData;
//分配大小
SetLength(ary,2);
//赋值
ary[0].MyID := 1;
ary[0].MyName := 'fda';
ary[1].MyID := 2;
ary[1].MyName := 'fdaf';
------解决方案--------------------
指针只是指向一个内存地址.
指向的内容你说他是整数 他就是整数 你说他是字符串就是字符串
对于内存来说都是0101010101 没有什么区别.