pouvez-vous déclarer des données dans un caractère ** en utilisant hex?

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 .