Frage Warum definieren Sie \ 0 als erstes Element eines Char-Arrays in C?


Wenn ich lese BlauZ Quellcode, sehe ich oft char Arrays wie folgt definiert:

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

Was nützt es, das erste Element als zu definieren? \0?


75
2017-07-11 10:11


Ursprung


Antworten:


In Ihrem speziellen Fall wird dieses Array als Pfadname für a verwendet PF_LOCAL Steckdose; sehen Hier. Und führende NUL wird verwendet, um darauf hinzuweisen, dass diese Adresse eine abstrakte ist. Von Mann 7 Unix:

Eine abstrakte Socket-Adresse zeichnet sich dadurch aus, dass   sun_path [0] ist ein Nullbyte ('\ 0').

Und das ist der einzige Grund, warum das erste Element ist \0.


116
2017-07-11 10:32