你能用十六进制声明char **中的数据吗?

时间:2010-05-22 19:04:27

标签: c

让我说我有这个

char *something[] = { 
    "/bi", 
    "-c", 
    "5", 
    NULL, 
    NULL 
};

但是我想用十六进制声明它,我该怎么做呢;编译器一直在向我发错:

char *something[] = { 
    {0x2f,0x62,0x69},
    {0x2d,0x63},
    {0x35},
    {0x00}, 
    {0x00}
};

为此添加其他内容,0x00总是为空吗? 0x00总是在NULL为-1的系统上转换为NULL,例如?

2 个答案:

答案 0 :(得分:6)

您可以在字符串文字中使用十六进制转义序列。例如:

char *something[] = { 
    "\x2f\x62\x69",
    "\x2d\x63"
}; 

答案 1 :(得分:1)

回答关于NULL和空指针的问题:宏NULL 总是 0.编译器然后将其转换为适当的空指针。 The comp.lang.c FAQ has an entire section explaining this more thoroughly