如果 x 的类型是 char * 那么 *x != '\' 是对的. 那么 *x != NULL 是错的. 不能拿一个字符类型跟指针类型比较. 看了这么久,没有一个人说出这是错的.
ASCII 只有7位,用8Bits 表示都有点浪费了。 '\0' 是8Bits NULL 跟指针一样长. X86 DOS, Windows :16Bits 为2字节 near 指针,4字节 far 指针 X86,32 Bits 有32 Bits 和48 Bits 两种指针, 不过MS 在 Windows这里,偷懒一下; 同时也保护了操作系统。 只使用 32Bits指针 (near 指针),不使用48Bits (far 指针) 其他编译器,也跟着偷懒,所以只有32Bits指针 (near 指针)。 '\0' 只用来表示字符串结束。 NULL只用来表示指针为空指针。 二者混用,对于字符串来说,就多了几个字节,当写字符串的时候,可能就越界了。 即使编译器能够正确处理,逻辑上也是不对的。 对于指针,可能没什么,不过编译器,可能会给你一个警告。 当你看到,一个字符串结束符用NULL赋值,初始化,你的头估计会有两个大。 同样,当你看到指针,居然用字符'\0' 赋值,初始化,你估计也会觉得不太对头。 C++ ,为了区分整数0,和空指针 又搞出个 nullptr C++ 无法区分NULL 和0 结果是 int 和指针重载会有冲突,特别是参数为常量 0的时候。 你这里,居然要合并 ‘\0’,和NULL 你真以为的,合并会比, 分开更好吗????
[quote=引用 32 楼 Athenacle_ 的回复:] [quote=引用 30 楼 wzr_8703 的回复:] [quote=引用 18 楼 zhao4zhong1 的回复:] '\0'是字符常量;NULL是宏。
值相同,类型不同
查 ascii 码表, nul 表示 0, 很多数搞混了 nul 和 null
[quote=引用 30 楼 wzr_8703 的回复:] [quote=引用 18 楼 zhao4zhong1 的回复:] '\0'是字符常量;NULL是宏。
[quote=引用 18 楼 zhao4zhong1 的回复:] '\0'是字符常量;NULL是宏。
70,017
社区成员
243,265
社区内容
加载中
试试用AI创作助手写篇文章吧