簡體   English   中英

將數組作為函數參數c

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM