在C语言中,NUL和NULL可以互换使用吗?
在C语言中,没有标准化的NUL宏。与普通的0字面量相比,NULL具有优势,它向读者指示“嘿,我们正在处理一个指针”,这可能被认为是一个优点。
在C++中,惯用法是一段时间以来只写0,但后来他们似乎改变了主意,引入了一个新的字面量nullptr,原因不详。
在C中,我建议对指针使用NULL,对字符使用'\0'。
更重要的是,避免对字符使用NULL,因为如果您的代码变为C++11,能够将NULL搜索和替换为nullptr将给您额外的类型安全性。而每次使用NULL作为整数常量零而不是指针将使这更加困难。
nullptr的原因是它是一个void *指针。而C中的NULL不是。因此,“某些原因”是为了类型安全。
NUL和NULL在C语言中可以互换使用吗?
NUL是ASCII字符代码0的表示方式。
NULL是在stddef中定义的一个宏,表示空指针。
所以,答案是否定的,它们不能互换使用。
NULL的大小与指针相同(通常是32位或64位)。NUL的大小与字符相同(在C语言中通常是8位,在其他支持16位Unicode的语言中有时是16位)。它们不能互换使用。
如果在字符串中使用0,则应使用NUL。如果在指针中使用0,则应使用NULL。只有NULL在C语言中有一个宏。在C语言中,所有的字符串字面量都会在编译器自动添加一个NUL 0字节,因此不需要宏。
“NULL的大小与指针相同”-->也许是这样的。它可能与int的大小相同。NULL的类型没有指定。