关于NULL,nil,0
用过C++的Delphi的程序员都知道,C++中的NULL在Delphi中为nil,意思是空指针
在C++中 为 (void*)0 在Dlephi中 为 Pointer(0)
但是,这不是绝对,因为Handle
在C++中Handle,是一个指针
在Delphi中Handle,被理解为一个整数了,于是一切差别就从这里开始
先看一个函数吧! CreateWindow
在C++的申明为:
HWND CreateWindow(
LPCTSTR lpClassName, // pointer to registered class name
LPCTSTR lpWindowName, // pointer to window name
DWORD dwStyle, // window style
int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle to parent or owner window
HMENU hMenu, // handle to menu or child-window identifier
HANDLE hInstance, // handle to application instance
LPVOID lpParam // pointer to window-creation data
);
让我们来看看有几个指针(7个,返回值,前两个参数,后四个参数)
让我们再来看看在Delphi中的申明:
function CreateWindow(
lpClassName: PChar; // pointer to registered class name
lpWindowName: PChar; // pointer to window name
dwStyle:Integer; // window style
x: Integer; // horizontal position of window
y: Integer; // vertical position of window
nWidth: Integer; // window width
nHeight: Integer; // window height
hWndParent: Integer; // handle to parent or owner window
hMenu: Integer; // handle to menu or child-window identifier
hInstance: Integer; // handle to application instance
lpParam: Pointer // pointer to window-creation data
): Integer;
有几个指针呢?(有三个,前两个和最后一个参数)
如果在调用此函数时,夸张一点,将所有指针(以C++)全用NULL代替的话,在Delphi中,函数调用应是这样的:
hWnd:= CreateWindow( ’’,’’, ws_Child, 0,0,100,100,0,0,0,nil); //此函数只是例子
可见如果NULL指的是Handle的话,在Delphi中,它等价与0;其他吗?等价于nil(PChar暂且搁下)(见第二篇)
以上是我的一些看法,愿大家指正