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