delphi 中关于动态数组指针的问题

d_eng123456 2014-07-12 10:19:45
,这是C++的程序,
我这么写
type

TDoubleArray = array of Double;

PDoubleArray = ^TDoubleArray;
var
pop: pDoubleArray;
setlength(pop^,M*D);
结果有错误,不知道这种动态数组指针该怎么写,求大神指导
...全文
375 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
RedJokers 2016-08-07
  • 打赏
  • 举报
回复
new(pop);
记得用完释放
lyhoo163 2014-07-12
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
type
  TDoubleArray = array of Double;  // 定义动态数组类
  PDoubleArray = ^TDoubleArray;    // 定义指向动态数组的指针
var
  A:TDoubleArray;                  // 声明动态数组的变量
  pop: pDoubleArray;               // 声明动态数组指针的变量
  M,D:integer;                     // 声明决定动态数组大小的变量
begin
  M:=12;                            
  D:=11;                           
  setlength(A,M*D);                // 设置动态数组A的长度
  pop:=@A;                         // 将动态数组A的地址引入 Pop指针变量  
end;
上述代码运行正常,可以说明你的问题了。
看那山瞧那水 2014-07-12
  • 打赏
  • 举报
回复
a:array of char 动态数组 a 和 @a[0]等价。动态数组名a是一个指针,是数组首地址。 b:array[0...99] of char 静态数组 @b 和 @b[0]等价。静态数组名b是一个变量,是数组首元素的值b[0]
「已注销」 2014-07-12
  • 打赏
  • 举报
回复
pop: pDoubleArray; popdest: TDoubleArray setlength(popdest,M*D); pop := @popdest;
「已注销」 2014-07-12
  • 打赏
  • 举报
回复
动态数组本身的长度是未知的,本质上认为,动态数组就是一个指针。 他的长度在你setlength(arr,n)的时候才被设置,相当于给动态数组申请一段内存空间,空间大小为sizeof(double) * n。 这里面的pop是一个指针,指向另一个指针(动态数组),而且为对其申请空间也未将其指向某个内存地址(动态数组)。那pop^是未定义的。对一个未定义的东西,还要来一下setlength,这是什么意思?

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧