CnPack Forum » 技术板块灌水区 » CnPackTip#3:认识静态数组 array[m,n] of x


2007-3-7 15:37 skyjacker
CnPackTip#3:认识静态数组 array[m,n] of x

CnPackTip#3:认识静态数组 array[m,n] of x

Written by SkyJacker
http://www.cnpack.org
CnPack IV  QQ Group: 130970
2007-3-7

年前 passion 和 Bahamut讨论过。
这里总结一下,有误之处请指出。

var
  A: array[0..0] of Char;   // 表示一个字符。即 array[0..0] 表示一个此类型的元素
  B: array[0..10] of Char;  // 下标从0开始的Char数组可以把数组名当作PChar来使用;也可以用字符串直接赋值
  C: array[1..10] of Char;  // 普通数组
  D: array[-1..10] of Byte; // 普通数组
  I: Integer;
begin
  A[0] := 'A';
  B := 'BC';
  C[1] := 'D';
  D[-1] := 2;
  D[0] := Ord('F');
  D[1] := Ord('A');
  for I := - 1 to 3 do
  begin
    ShowMessage(IntToStr(D[I]));
  end;
  ShowMessage(A + '-' + B + '-' + C);
end;

1、关于"Zero-based character arrays" 的 Delhpi Help:
//An array type of the form array[0..x] of Char is called a zero-based character array.
//Zero-based character arrays are used to store null-terminated strings and are compatible with PChar values

2、array[0..0] 的意义是什么?
是为了方便传递 array 类型的参数。
可以参考 CnPackTip#4 <<New() 的学习>>

3、数组下标可以为负。

2007-3-7 15:43 Passion
Tip#4在哪儿?:lol

2007-3-7 16:09 kendling
对哇,还没有,怎么参考?

2007-3-7 17:11 Passion
不过内容应该差不多有了,就在今天的群聊天记录里。小冬没看见?

2007-3-7 22:32 skyjacker
感叹一下:事事之间可能有不可预知的关联啊。

今天随手转了那篇 pascal/c 指针的区别,
之后,看到清风的问题就用到了。
再看清风的New问题,又看到了 array[0..0],就把年前的PChar总结了一下。
看New时,又明白了 <pascalc 指针区别> 中的 “New()只能获得对象的单个实体的内存大小”。

不折不扣转了个好圈!

纪念一下!

[[i] 本帖最后由 skyjacker 于 2007-3-7 22:41 编辑 [/i]]

2007-3-8 05:40 Passion
该文已塞入文档中心。

2007-3-8 09:06 kendling
Passion:我这两天都忙,没留意群里的聊天。

2007-3-8 09:55 skyjacker
Tip#4 我先预申请了这个号.:lol:

发现要明白 New, 还必须熟悉 TypeInfo. :Q
不然搞不明白,申请完内存后,初始化内存部分.
procedure  _InitializeArray(p: Pointer; typeInfo: Pointer; elemCount: Cardinal);

[[i] 本帖最后由 skyjacker 于 2007-3-8 09:57 编辑 [/i]]

2007-3-8 16:38 kendling
期待Tip#4

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.