关于NULL,nil,0(其实都知道,只不过我把他整理成册了)(一)

类别:Delphi 点击:0 评论:0 推荐:




关于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暂且搁下)(见第二篇)

 

以上是我的一些看法,愿大家指正

本文地址:http://com.8s8s.com/it/it5612.htm