当前位置: 技术问答>linux和unix
有点晕:Linux C下面的 '/0',NULL, 0x00,这三个字符是一回事吗 ? 使用的场合有什么不同 ? 不甚感激!
来源: 互联网 发布时间:2017-04-11
本文导语: 在学习Linux下的C开发的时候,这几个字符似乎是一回事,那他们之间有什么区别吗 ?使用的场景有什么不同 ? '/0'和NULL都可以表示字符串的默认结束符吗 ?而memset初始化某个变量值的时候似乎都是用的0x00 | ...
在学习Linux下的C开发的时候,这几个字符似乎是一回事,那他们之间有什么区别吗 ?使用的场景有什么不同 ?
'/0'和NULL都可以表示字符串的默认结束符吗 ?而memset初始化某个变量值的时候似乎都是用的0x00
'/0'和NULL都可以表示字符串的默认结束符吗 ?而memset初始化某个变量值的时候似乎都是用的0x00
|
字符时用,指针是用NULL,0x00很少见,一般直接用0代替;这三个本身是一个东西。
另外,这是c语言的问题,与linux无关。
另外,这是c语言的问题,与linux无关。
|
正解
|
''其实就是0x0了。
|
NULL的定义,可以参考下
/usr/include/linux/stddef.h
#ifndef _LINUX_STDDEF_H
#define _LINUX_STDDEF_H
#undef NULL
#if defined(__cplusplus)
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
/usr/include/linux/stddef.h
#ifndef _LINUX_STDDEF_H
#define _LINUX_STDDEF_H
#undef NULL
#if defined(__cplusplus)
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
|
是0x00的ascii escape sequence的表示。
至于NULL和上面两者就没有多大关系了。
至于NULL和上面两者就没有多大关系了。
|
其实就是类型不一样,区分不同的赋值操作,提高可读性