将数组作为函数参数c传递

时间:2016-02-29 12:39:09

标签: c arrays arguments

我目前通过spi发送命令如下:

我想创建一个函数来发送传递给它的任何命令。我可以将一个字节数组作为参数传递给函数吗?就像我在下面。

1 个答案:

答案 0 :(得分:1)

使用C中的指针完成传递数组 由于数组可能通过从T[]T*的隐式转换衰减指针,我们会传递指向引用数组的函数的指针。

编写像 1

这样的函数
void sendCommand(uint8_t* Cmd) {
    ...
}

并将其称为

sendCommand(SyncCmd);

然而,请注意:sizeof(Cmd)sendCommand中使用时会产生指针的大小,而不是整个数组。因此,您需要显式传递大小。请参阅Linus Torvalds的this,听听关于此事的一些严厉措辞。

1 请注意,uint8_t[]uint8_t*uint8_t[42]和朋友在用作参数时都是等效的。也就是说,这些都是等价的:

void foo1(uint8_t*);
void foo2(uint8_t[]);
void foo3(uint8_t[42]);

感谢@Olaf的贡献。