Зачем определять \0 как первый элемент массива char в C?

Когда я читаю BlueZ исходный код, я часто вижу char массивы, определенные следующим образом:

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

Какая польза от определения первого элемента как \0?

Ответ 1

В вашем конкретном случае этот массив используется как путь для сокета PF_LOCAL; см. здесь. И ведущий NUL используется, чтобы указать, что адрес является абстрактным. Из man 7 unix:

абстрактный адрес сокета отличается тем, что sun_path [0] - нулевой байт ('\ 0').

И это единственная причина, по которой первый элемент \0.