[英]passing array as function argument c
我目前通過spi發送命令,如下所示:
我想創建一個函數來發送傳遞給它的任何命令。 我可以將字節數組作為函數的參數傳遞嗎? 就像我下面。
傳遞數組是使用C中的指針完成的。
由於數組可能會通過從T[]
到T*
的隱式轉換而衰減為指針,因此我們將指針傳遞給引用該數組的函數。
編寫類似1的函數
void sendCommand(uint8_t* Cmd) {
...
}
並稱它為
sendCommand(SyncCmd);
但是 ,請注意:在sendCommand
使用sizeof(Cmd)
產生指針的大小,而不是整個數組的大小 。 因此,您需要顯式傳遞大小。 請看Linus Torvalds的這篇文章 ,以聽取一些苛刻的話。
1注意,用作參數時, uint8_t[]
, uint8_t*
, uint8_t[42]
和朋友都是等效的。 也就是說,這些都是等效的:
void foo1(uint8_t*);
void foo2(uint8_t[]);
void foo3(uint8_t[42]);
感謝@Olaf在這里的貢獻。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.