Массивы не могут быть переданы в качестве параметров функции по значению в C.
Вы можете поместить массив в структуру:
typedef struct type24 {
char byte[3];
} type24;
, а затем передать ее по значению, ноКонечно, тогда менее удобно использовать: x.byte[0]
вместо x[0]
.
Ваша функция type24_to_int32(char value[3])
фактически проходит по указателю, а не по значению.Это в точности эквивалентно type24_to_int32(char *value)
, а 3
игнорируется.
Если вы счастливы, передавая указатель, вы могли бы придерживаться массива и делать:
type24_to_int32(const type24 *value);
Это передаст указатель на массив, а не указатель на первый элемент, поэтому вы используете его как:
(*value)[0]
Я не уверен, что это действительно выигрыш, так какесли вы случайно напишите value[1]
, тогда произойдет что-то глупое.