为什么定义\ 0作为在C中的字符数组的第一个元素?
当我读取BlueZ源代码时,我经常看到像这样定义的char
数组:
// bluez/android/sco-msg.h static const char BLUEZ_SCO_SK_PATH[] = "\0bluez_sco_socket";
将第一个元素定义为\0
什么好处?
在你的特定情况下,这个数组被用作PF_LOCAL
套接字的path名; 看到这里 。 而领先的NUL则用来表示地址是抽象的。 从男人7 unix :
抽象套接字地址是由sun_path [0]是一个空字节('\ 0')的事实来区分的。
这就是为什么第一个元素是\0
的唯一原因。