Массив байтов жесткого кода в C
Я отлаживаю сетевое приложение.
Мне нужно смоделировать некоторые из данных, обмениваемых для того, чтобы приложение работало. В С++ вы можете сделать что-то вроде
char* myArray = { 0x00, 0x11, 0x22 };
Однако я не могу найти эквивалент C для этого синтаксиса.
В основном я просто хочу заполнить массив жестко закодированными значениями.
Ответы
Ответ 1
Вы можете сделать то же самое в C, но вы должны объявить его типа char[]
, а не char*
, чтобы вы могли получить его размер с помощью оператора sizeof
:
char myArray[] = { 0x00, 0x11, 0x22 };
size_t myArraySize = sizeof(myArray); // myArraySize = 3
Ответ 2
Попробуйте:
char myArray[] = { 0x00, 0x11, 0x22 };
Ответ 3
Только для полноты, с C99 вы также можете использовать составные литералы:
char *myArray = (char []) {0x00, 0x11, 0x22 };
Если совместимость исходного кода с С++ является требованием, вам лучше не использовать эту конструкцию, потому что она - afaik - не является частью стандарта С++.
Ответ 4
Не
char myArray[] = {0x00, 0x01,0x02};
работа?
Ответ 5