Равенство 2-х байтовых массивов / встроенного массива c - PullRequest
0 голосов
/ 22 апреля 2011

Я программирую в target-c, поэтому я тоже могу использовать C.У меня есть массив байтов: (например)

Byte byteArray[] = {0,0};

И мне нужно по сравнению с другим массивом, который жестко закодирован.Поэтому я пытаюсь сделать что-то вроде:

if (byteArray == {0,1}) {
    //do something
}

Но на фигурных скобках есть ошибка «Ожидаемое выражение».Разве невозможно иметь встроенный массив C?

Ответы [ 3 ]

2 голосов
/ 22 апреля 2011
byte toTest[2] = {0, 1};
if(memcmp(byteArray, toTest, sizeof(toTest)) == 0) { ... }

Или более простой способ:

if(byteArray[0] == 0 && byteArray[1] == 1) { ... }
2 голосов
/ 22 апреля 2011

Даже если массив не будет «встроенным», вы не сможете этого сделать, потому что значение массива - это адрес его памяти.

Вам нужно использовать memcmp.

0 голосов
/ 22 апреля 2011

Вы можете использовать mempcmp():

Byte otherArray[] = {0, 1};
if (memcmp(byteArray, otherArray, sizeof(byteArray)) == 0) {
    // ... equal
}

Если у вас есть поддержка C99, вы также можете использовать что-то вроде:

memcmp(byteArray, &(Byte[]){0,1}, 2)

... но, по моему мнению, это будетбыстро не читается.

...