У меня есть вот такой код на С:
static uint8_t uart_command_buf[42];
...
void uart_packet_damp(uint8_t uart_command_buf[]) {
for(int i = 0; i <= 41; i++)
{
printf("0x%02X ", uart_command_buf[i]);
}
}
...
uart_packet_dump(uart_command_buf);
Как мне переписать его, чтобы передавать туда указатель на массив, а не копию массива? В лоб не получается(точнее, собирается, но ругается):
static uint8_t uart_command_buf[42];
...
void uart_packet_dump(uint8_t *uart_command_buf[]) {
for(int i = 0; i <= 41; i++)
{
printf("0x%02X ", *uart_command_buf[i]);
}
}
...
uart_packet_dump(&uart_command_buf);
ud-rpl_root.c: In function 'char_in':
ud-rpl_root.c:151:26: warning: passing argument 1 of 'uart_packet_dump' from incompatible pointer type [-Wincompatible-pointer-types]
uart_packet_dump(&uart_command_buf);
^
ud-rpl_root.c:117:1: note: expected 'uint8_t ** {aka unsigned char **}' but argument is of type 'uint8_t (*)[42] {aka unsigned char (*)[42]}'
uart_packet_dump(uint8_t *uart_command_buf[]) {
^~~~~~~~~~~~~~~~