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

原创 2002年04月28日 09:33:00




关于NULL,nil,0

用过C++Delphi的程序员都知道,C++中的NULLDelphi中为nil,意思是空指针

 

C++ (void*)0 Dlephi Pointer(0)

但是,这不是绝对,因为Handle


C++Handle,是一个指针


DelphiHandle,被理解为一个整数了,于是一切差别就从这里开始


先看一个函数吧! 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暂且搁下)(见第二篇)

 

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

OC中nil、Nil、NULL、NSNULL的一些区别

OC中nil、Nil、NULL、NSNULL的一些区别
  • ZeroOnet
  • ZeroOnet
  • 2016年07月22日 16:19
  • 788

iOS中nil 、NULL、 Nil 、NULL的区别

1、nil >Defines the id of a null instance. 定义一个实例为空,且指向一个OC对象的空指针; >示例代码: objc代码: ...
  • zong0823
  • zong0823
  • 2016年07月27日 10:57
  • 106

关于nil 和null还有Nil

nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空。这些可以理解为nil,Nil, NULL的区别吧。 示例如下: id object = nil;   // ...
  • u012515331
  • u012515331
  • 2014年11月22日 14:18
  • 249

nil、Nil、NULL和NSNull的区别

1. nil 我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉; 或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统将这块内存释放掉,...
  • qq_19732563
  • qq_19732563
  • 2015年09月30日 14:10
  • 155

nil、Nil、NULL、NSNull的区别

nil:指向一个对象的空指针,对objective c id 对象赋空值. Nil:指向一个类的空指针,表示对类进行赋空值. NULL:指向其他类型(如:基本类型、C类型)的空指针, 用于对非对象指针...
  • luobo140716
  • luobo140716
  • 2016年07月29日 10:38
  • 349

nil、Nil、NULL、NSNull 的区别

原文:http://nshipster.com/nil/ 理解虚无的概念既是一个哲学问题也是一个实际问题。我们是某个世界的居民,原因在于一个合乎逻辑的宇宙存在诸多不确定性。作为逻辑系统的物理表示,计算...
  • john2xy
  • john2xy
  • 2014年02月15日 16:16
  • 501

nil、Nil、NULL、NSNull的区别

nil、Nil、NULL、NSNull的区别 nil:指向一个对象的空指针,对objective c id 对象赋空值. Nil:指向一个类的空指针,表示对类进行赋空值. NULL:指向其他类型(如:...
  • ws1352864983
  • ws1352864983
  • 2016年08月04日 16:37
  • 357

nil、Nil、NULL和NSNull的理解

给nil对象发送消息,是不会崩溃的,但是要么返回默认的0,要么返回nil对象。至于id类型的为什么返回0x0,而不是返回nil,我也是有些疑问的,nil和0x0的具体区别还有待研究。 而如果给nun...
  • tianyitianyi1
  • tianyitianyi1
  • 2017年12月25日 14:08
  • 20

nil、Nil、NULL与NSNull的区别

1.nil 指向一个对象的指针为空 在objc.h中的定义如下所示: [objc] view plaincopy #ifndef nil   ...
  • qjbagu
  • qjbagu
  • 2015年05月15日 00:22
  • 321

nil、Nil、NULL和NSNull的理解

其实早就想研究一下nil、Nil、NULL和NSNull之间的区别,只是工作上除了nil,其它的几乎少有用到,所以一直拖到今天。有时候感觉自己越来越浮躁,对细微处的知识理解不够深入,因此这里给自己提个...
  • fengmio
  • fengmio
  • 2015年10月02日 17:29
  • 150
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于NULL,nil,0(其实都知道,只不过我把他整理成册了)(一)
举报原因:
原因补充:

(最多只允许输入30个字)