簡體   English   中英

如何調用帶有結構體數組的函數?

[英]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類型pPointPoint * 請注意, pPoint上的“ p”是指針類型的常用符號。 沒錯,您通常可以正常創建Point結構的數組並將指針傳遞給函數。 (請注意不要傳遞指針的地址,該地址將是Point ** 。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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