байтовый массив жесткого кода в C - PullRequest
18 голосов
/ 19 мая 2009

Я отлаживаю сетевое приложение.

Мне нужно смоделировать некоторые данные, которыми обмениваются, чтобы приложение работало. В C ++ вы можете сделать что-то вроде

char* myArray = { 0x00, 0x11, 0x22 };

Однако я не могу найти эквивалент C для этого синтаксиса.

По сути, я просто хочу заполнить массив жестко закодированными значениями.

Ответы [ 5 ]

37 голосов
/ 19 мая 2009

Вы можете сделать то же самое в C, но вы должны объявить его типа char[], а не char*, чтобы вы могли получить его размер с помощью оператора sizeof:

char myArray[] = { 0x00, 0x11, 0x22 };
size_t myArraySize = sizeof(myArray);  // myArraySize = 3
5 голосов
/ 20 мая 2009

Просто для полноты, с C99 вы также можете использовать составные литералы:


    char *myArray = (char []) {0x00, 0x11, 0x22 };

Если требуется совместимость исходного кода с C ++, лучше не использовать эту конструкцию, потому что она - afaik - не является частью стандарта C ++.

5 голосов
/ 19 мая 2009

Попробуйте с:

char myArray[] = { 0x00, 0x11, 0x22 };
2 голосов
/ 19 мая 2009
2 голосов
/ 19 мая 2009

не

char myArray[] = {0x00, 0x01,0x02};

работа

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