Массив байтов жесткого кода в 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};

работа?