回答
传递数组中C.
使用指针通过从T[]
的隐式转换完成,因为阵列可以衰变到指针T*
,我们将指针传递给参照阵列的功能。
收件像
void sendCommand(uint8_t* Cmd) {
...
}
功能并调用它像
sendCommand(SyncCmd);
然而,注意:sizeof(Cmd)
产生了尺寸指针,而不是整个阵列 ,当在sendCommand
内使用时。因此,您需要明确传递大小。见Linus Torvalds的this在这件事上听到一些粗暴的话。
注意,作为参数使用时uint8_t[]
,uint8_t*
,uint8_t[42]
,和朋友都是等效的。也就是说,这些都是等效的:
void foo1(uint8_t*);
void foo2(uint8_t[]);
void foo3(uint8_t[42]);
感谢@Olaf为您的网站的贡献。
'uint8_t cmd []'也很好。更清楚的是,它被用作内部数组 - 自我记录代码。 – Olaf
@奥拉夫嗯,那是你的看法。当通过周围的代码阅读时,指针引用数组的事实也应该是显而易见的。另外,如果某人真的只传递了一个元素作为大小为1的'cmd'?我更喜欢'uint8_t *'。但是我会提到他们的等同性,是的。 [Linus在这方面和内核方面也有发言权](https://lkml.org/lkml/2015/9/3/499),只有在你感兴趣的时候。 – Downvoter
我现在读了Linus咆哮。我完全同意他说,人们应该学习和认识C.但这意味着他们意识到正式的数组参数转换。他们已经必须知道实际的数组参数衰减到指针,所以格式参数衰减也应该清楚。如果你依赖于一个特定的数组参数大小,你必须通过这个大小(也许主要问题是'[]'语法)。作为常数或VLA。函数头应该记录参数()和例如。 Doxygen评论。要求阅读代码来理解接口是不好的 – Olaf
- 1. 传递函数数组作为参数
- 2. 将函数数组作为参数传递给函数
- 3. 点作为函数的参数ç
- 4. 当函数作为参数传递时,参数如何传递给该函数?
- 5. 传递函数的参数作为参数传递给另一个函数
- 6. 在C++中将函数参数作为函数参数传递
- 7. 传递$作为函数参数(jQuery的)
- 8. 的Xquery:传递函数作为参数
- 9. 传递函数作为参数
- 10. Bash:传递函数作为参数
- 11. lambda函数作为参数传递
- 12. 传递id作为函数的参数
- 13. 将va_list作为函数参数传递
- 14. 传递函数作为参数用Clojure
- 15. 传递函数作为参数
- 16. 传递const&作为函数参数
- 17. 将observableArray作为函数参数传递
- 18. 如何传递函数作为参数?
- 19. GLib HashTable传递函数作为参数
- 20. 作为参数传递给函数Javascript
- 21. 传递函数指针作为参数
- 22. 作为参数传递一个函数?
- 23. C#传递string []数组作为参数
- 24. 传递数组作为参数
- 25. 传递一个数组作为参数
- 26. 传递数组作为参数在PHP
- 27. 数组作为参数问题传递
- 28. 如何传递数组作为参数?
- 29. 传递数组作为参数在JavaScript
- 30. 将数组作为url参数传递
您不能向C中的函数传递数组或从C中的函数传递数组,但可以将指针传递给它的第一个元素。 – Olaf