怎样给多维数组赋值?(10分)

  • 主题发起人 主题发起人 shaofun
  • 开始时间 开始时间
如果存在多个地方需要用到有初始化的变量,而且在其数组中使用的都是
自管理类型或者简单数据类型,我们不防使用MOVE来对其赋值

例如:
TYPE TARR=ARRAY[1..4,1..3] OF INTEGER;
CONST A1:TARR=((XXX),(XXX)....);

在每次要初始化赋值的地方:
例如
VAR TMPA:TARR;
BEGIN
move(pchar(@A1)^,pchar(@TmpA)^,SIZEOF(TARR));
END

 
>>来自:compux, 时间:2001-11-14 9:55:00, ID:729550
>>var
>> d1: array[1..4,1..3] of integer = ((-1,0,1),(-1,0,0),(0,0,0),(0,0,1));

>>不过在Unit里d1需要定义为全局变量

确实必须是全局变量,因为编译器的缘故,这要从编译原理说起,我就简单的说,全局变量
的值是存在执行程序中,当加载执行程序时,即把全局变量放入数据段,同时初始值也就有
了。但是局部变量用的是堆栈,不可能有初始值,其值是随机的。C++的语法规定可以定义
时赋值,这是语言的语法规定的,而Delphi就没有定义时赋值的语法,所以,不允许局部
变量定义时赋值,全局变量可以是因为那编译后不需要代码,只是程序加载就可以有初始
值的缘故。如果认为我说得对,别忘了给我加分哟


 
我同意ss2000的说法,实际情形也是这样的!
 
to SS2000
谢谢!不好意思,我再讨教:
为什么在定义时可如下赋值
d1: array[1..4,1..3] of integer = ((-1,0,1),(-1,0,0),(0,0,0),(0,0,1));
而在程序中却不能如下赋值
d1 : = ((-1,0,1),(-1,0,0),(0,0,0),(0,0,1));
现在我只能分别赋值,太麻烦了
 
shaofun问的好
我也在关注这个问题
另外如果数组是record类型的话好像在全局变量里也不能赋值
如:
type pointer=record
x:integer;
y:integer;
end;
var arr1:array[1..3]of pointer=((1,1),(1,2),(3,4));就不行呢?
为什么?
 
接受答案了.
 
后退
顶部