在delphi里,数组变量是不是也就是指向该数组首地址啊?

seashoreboy 2003-08-22 02:00:25
就像C语言里那样的?
...全文
71 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjqyb 2003-08-22
  • 打赏
  • 举报
回复
//动态数组应这样看:
var
a:array of integer;
b,c:pointer;
begin
setlength(a,10);
b:=a;
c:=@(a[0]);
showmessage(inttostr(integer(b))+' '+inttostr(integer(c)));
end;
firstshine 2003-08-22
  • 打赏
  • 举报
回复
d983074(d983074) 说的是对的,从以下例子可以看出,那么@a[0]应该就是了数组首地址了。

procedure TForm1.Button1Click(Sender: TObject);
var
a:Array of integer;
b,c:pointer;
d:integer;
begin
SetLength(a,10);

for d:=0 to High(a) do a[d]:=d;

b:=@a;
c:=@(a[0]);
showmessage(inttostr(integer(b))+' '+inttostr(integer(c)));
end;
d983074 2003-08-22
  • 打赏
  • 举报
回复
看看b, c是否一样
var
a:array of integer;
b,c:pointer;
begin
setlength(a,10);
b:=@a;
c:=@(a[0]);
showmessage(inttostr(integer(b))+' '+inttostr(integer(c)));
end;
xz1980 2003-08-22
  • 打赏
  • 举报
回复
是引用
toyjoy 2003-08-22
  • 打赏
  • 举报
回复
应该是的!通过学了编译原理后感觉应该是的!
eaglezhao 2003-08-22
  • 打赏
  • 举报
回复
绝对不是,你只有用@取地址操作符才能取得它的地址,那么它就不是一个指针变量。
wzjpq1025 2003-08-22
  • 打赏
  • 举报
回复
d983074(d983074),你能举个动态数组的例子吗?
d983074 2003-08-22
  • 打赏
  • 举报
回复
只有静态数组才符合1楼的例子
动态数组则不是
FrameSniper 2003-08-22
  • 打赏
  • 举报
回复
指针和引用,WHO是WHO?
Spqk005 2003-08-22
  • 打赏
  • 举报
回复
是的
是指向首地址的
例子如上说明
firstshine 2003-08-22
  • 打赏
  • 举报
回复
应该是,请看:
procedure TForm1.Button1Click(Sender: TObject);
var
a:Array[0..10] of integer;
b,c:pointer;
begin
b:=@a;
c:=@(a[0]);
showmessage(inttostr(integer(b))+' '+inttostr(integer(c)));
end;

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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