繁体   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