Pertanyaan Mengapa mendefinisikan \ 0 sebagai elemen pertama dari array char di C?


Ketika saya membaca BlueZ kode sumber, saya sering melihat char array didefinisikan seperti ini:

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

Apa bagusnya untuk mendefinisikan elemen pertama sebagai \0?


75
2017-07-11 10:11


asal


Jawaban:


Dalam kasus khusus Anda, array ini digunakan sebagai pathname untuk a PF_LOCAL stopkontak; Lihat sini. Dan memimpin NUL digunakan untuk menunjukkan alamat itu adalah abstrak. Dari manusia 7 unix:

alamat soket abstrak dibedakan oleh fakta itu   sun_path [0] adalah byte null ('\ 0').

Dan inilah satu-satunya alasan mengapa elemen pertama adalah \0.


116
2017-07-11 10:32