<font color=red>区别nil,null,''</font>,好象哪本书上说是有区别的。。。。。。(100分)

  • 主题发起人 主题发起人 千中元
  • 开始时间 开始时间

千中元

Unregistered / Unconfirmed
GUEST, unregistred user!
随手copy下来delphi自己带的winsdk帮助,发现出了问题,后来发现忘了把null
改成nil.有朋友说,在c中用null,在pascal中用nil。
当时记得那本书上说到区别的时候好象提到了指针。。。。
唉,我读书不求甚解。。。
 
nil不就是空的指针吗?
 
有,
NIL同null
在Delphi中都有用,
一个为字符的空,一个为数字的空
 
Delphi里NULL可以当0使用,nil就不行
 
我知道什么时候会用null,nil.但是不会说
 
pascal的指针类型就是pointer,是专门的一种数据类型。
 
nil空指针
null空值
 
完全不同。

nil是空指针,强行转换为整数就是0(相当于c++的 NULL )
null是variant类型的空值(相当于sql里面的null)
 
nil空指针
null空值
 

nil在bcb里用!
null在d里用!
 
nil空指针
null空值
 
在Delphi中也使用nil,请先试试下例代码:
procedure TForm1.Button1Click(Sender: TObject);
begin

if Sender is TButton then
ShowMessage(‘找到'+(Sender as TButton).Name)
else
ShowMessage('Button没有找到'找到'+(Sender as TButton).Name);
end;

然后在begin下加入这行代码
Sender:=nil;
完整的过程如下,你执行一下吧。
procedure TForm1.Button1Click(Sender: TObject);
begin
Sender:=nil
//加入这句
if Sender is TButton then
ShowMessage(‘找到'+(Sender as TButton).Name)
else
ShowMessage('Button没有找到'找到'+(Sender as TButton).Name);
end;

看到了吧,nil就是零或没有的意思
 
nil指的是 空指针
null 指的是 空值
‘’ 指的是 空字串
 
在Delphi中:
NULL表示null Variant,表示未知类型的数据,可以赋给任何Variant型变量。
如果函数的返回是Variant类型,可以直接返回null。
Nil表示空指针,可以赋给任何指针变量,此时指针什么也不指向。
此时,0和nil一样,因为0会被Delphi转换成nil类型。
在C++中:
NULL表示空指针。
nil不能在C++使用。
不知道这样说明白吗?
 
我觉得是一回事,API 中用 NULL 表示空值,但是我传一个 0 也可以,传一个 nil 也可以,
nil 就是 0 ,NULL 也是 0 , 就像湖南人管红薯叫红薯,湖北人管红薯叫苕。
 
一般指针没创建时是NIL
NULL是一个空值,可以用来初始化
 
To BaKuBaKu:
API中一般用NULL表示空指针,是因为API一般使用C++描述
在Delphi中nil就是空指针的意思,我上面也说过此时,
0和nil一样,因为0会被Delphi转换成nil类型。
另外,你的名字很有意思,巴库巴库的意思?
 
大家讨论得都挺好,有人能给个只能用NIL或只能用NULL的例子吗?
洗耳恭听!
 
procedure TForm1.Button1Click(Sender: TObject);
var s:variant;
a:string;
begin
s:='asd';
s:=null;
s:='asdf';
showmessage(s);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
self:=nil
end;
 

function Test(v: Variant): Integer;
var
q: Variant;
msg: string;
begin
q := v
{ this is ok, since q is a variant }
if VarIsNull(q) then
msg := 'q is a null variant'
else
msg := 'q is not a null variant';
ShowMessage(msg);
Result := 1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//如果把这里的Null改为nil,则无法编译通过,提示Incompatible types:
//Variant and Pointer,很明显可以说明,NULL表示null Variant,表示未
//知类型的数据,而nil表示指针,空指针。
Test(Null)

end;
 
后退
顶部