当我阅读BlueZ个源代码时,我经常看到char个数组定义如下:

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

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

推荐答案

在您的特定情况下,此数组用作PF_LOCAL套接字的路径名;请参见here.前导NUL用来表示地址是抽象地址.从man 7 unix起:

抽象套接字地址的区别在于

这就是第一个元素是\0的唯一原因.

C++相关问答推荐

获取二维数组的最大元素

为什么我得到更多的256假阳性在PKZIP解密密钥验证?

如何在C中只使用一个带双方括号([i][j])访问语法的malloc来分配动态大小的2d数组?

由Go调用E.C.引起的内存快速增长

为什么内核使用扩展到前后相同的宏定义?

C语言中的strstr问题

Clang:如何强制运行时错误的崩溃/异常由于-fsanitize=undefined

非常大的数组的大小

自定义变参数函数的C预处置宏和警告 suppress ?

非正规化边缘毛刺

Char变量如何在不使用方括号或花括号的情况下存储字符串,以及它如何迭代到下一个字符?

解决S随机内存分配问题,实现跨进程高效数据共享

是否需要包括<;errno.h>;才能使用perror?

C11/C17标准允许编译器清除复合文字内存吗?

从BIOS(8086)中读取刻度需要多少?

Matlab/Octave对conv2函数使用哪种方法?

gdb - 你能找到持有内部 glibc 锁的线程吗?

无法理解 fgets 输出

const struct 成员的 typedef 中的灵活数组大小

如何使用 raylib 显示数组中的图像