[英]How do you call a function with an array of structs?
我具有以下LCD驅動程序代碼,並且不確定如何調用此函數
typedef struct {
int16_t X;
int16_t Y;
} Point, * pPoint;
void LCD_PolyLine(pPoint Points, uint16_t PointCount) {
int16_t X = 0, Y = 0;
while(--PointCount) {
X = Points->X;
Y = Points->Y;
Points++;
LCD_DrawUniLine(X, Y, Points->X, Points->Y);
}
}
將函數的第一個參數設為“ pPoint Points”是沒有意義的。 在我看來,它應該是“ pPoint * Points”。 然后,我可以創建一個pPoints數組並將此地址傳遞給它。
如果不修改它,您將如何調用該驅動程序函數?
將函數的第一個參數設為
pPoint Points
是沒有意義的。
實際上,這很有意義,因為pPoint
被定義為Point*
,即指向Point
的指針。 相當於
void LCD_PolyLine(Point *Points, uint16_t PointCount)
這是正確的簽名。 您需要做的就是傳遞struct Point
數組,然后傳遞其中的元素計數。
在Point
結構和typedef定義的最后一行,逗號后為* pPoint
。 該符號將pPoint
類型pPoint
為Point *
。 請注意, pPoint
上的“ p”是指針類型的常用符號。 沒錯,您通常可以正常創建Point
結構的數組並將指針傳遞給函數。 (請注意不要傳遞指針的地址,該地址將是Point **
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.