为什么在 C 语言中把0定义为字符数组的第一个元素?

当我阅读 蓝色源代码时,我经常看到这样定义的 char数组:

// bluez/android/sco-msg.h
static const char BLUEZ_SCO_SK_PATH[] = "\0bluez_sco_socket";

将第一个元素定义为 \0有什么好处?

4813 次浏览

在您的特殊情况下,这个数组用作 PF_LOCAL套接字的路径名; 请参阅 给你。前导 NUL 用于指出地址是一个抽象的地址。来自 Man 7 Unix:

抽象套接字地址的区别在于 Sun _ path [0]是一个空字节(’0’)。

这就是为什么第一个元素是 \0的唯一原因。