Вы можете объявить данные в символе **, используя шестнадцатеричный? - PullRequest
1 голос
/ 22 мая 2010

допустим, у меня есть это

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

, но я хочу объявить его в шестнадцатеричном виде, как бы я это сделал;компилятор постоянно выдает ошибку:

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

, чтобы добавить что-то еще к этому, 0x00 ВСЕГДА нулевое?0x00 всегда переводится в NULL в системах, где NULL равен -1, например?

Ответы [ 2 ]

6 голосов
/ 22 мая 2010

Вы можете использовать шестнадцатеричные escape-последовательности в строковом литерале. Например:

char *something[] = { 
    "\x2f\x62\x69",
    "\x2d\x63"
}; 
1 голос
/ 23 мая 2010

Чтобы ответить на ваш вопрос о NULL и нулевом указателе: макрос NULL равен всегда 0. Затем компилятор преобразует его в соответствующий нулевой указатель. В FAQ по comp.lang.c есть целый раздел, объясняющий это более подробно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...