Disons que j’ai ce
char *something[] = { "/bi", "-c", "5", NULL, NULL };
mais je veux le déclarer en hex, comment pourrais-je le faire? le compilateur continue à me tromper:
char *something[] = { {0x2f,0x62,0x69}, {0x2d,0x63}, {0x35}, {0x00}, {0x00} };
pour append quelque chose à cela, 0x00 est-il toujours nul? 0x00 est-il toujours traduit en NULL sur les systèmes où NULL est -1, par exemple?
Vous pouvez utiliser des séquences d’échappement hexadécimales dans un littéral de chaîne. Par exemple:
char *something[] = { "\x2f\x62\x69", "\x2d\x63" };
Pour répondre à votre question sur NULL
et le pointeur null: la macro NULL
est toujours égale à 0. Le compilateur la convertit ensuite en un pointeur null approprié. La FAQ comp.lang.c contient une section entière expliquant cela plus en détail .