博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在Delphi中,关于数组名称

Posted on 2014-05-09 09:47  wlmbz  阅读(284)  评论(0编辑  收藏  举报

动态数组数组名代表的是第一个元素的内存地址.

静态数组名称代表的是数组第一个元素的内存位置, 而不是数组第一个元素的内存地址.

但对于静态数组,在某些情况下编译器可能会自动取数组地址,如:

function GetWinClassName(hwnd:HWND):string;
var
buf1 : array[0..1023] of Char;
buf2 : array[0..1023] of Char;
begin
  SetString(Result,buf1,GetClassName(hwnd, buf1, 1023));
  SetString(Result,PChar(@buf2),GetClassName(hwnd, PChar(@buf2), 1023));
end;

function GetClassName(hWnd: HWND; lpClassName: LPWSTR; nMaxCount: Integer): Integer; stdcall;

函数 GetClassName 的第二个参数很明显是要求指针, 但是你直接用静态数组名也是可以的, 这里编译器应该做了点什么