如何使用结构数组调用函数?

时间:2016-01-17 00:17:45

标签: c

我有以下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数组并将此地址传递给它。

如果不修改它,你怎么称呼这个驱动程序功能呢?

2 个答案:

答案 0 :(得分:1)

  

让函数的第一个参数为pPoint Points是没有意义的。

它实际上非常有意义,因为pPoint被定义为Point*,即指向Point的指针。它相当于

void LCD_PolyLine(Point *Points, uint16_t PointCount)

这是正确的签名。您需要做的就是传递一个struct Point数组,然后是其中的元素数。

答案 1 :(得分:0)

Point struct和typedef定义的最后一行,在逗号后面显示* pPoint。这是将pPoint类型定义为Point *的表示法。注意" p" on pPoint是指针类型的常用表示法。所以你是对的,你通常可以创建一个Point结构数组并将指针传递给函数。 (注意不要传递指针的地址,这将是Point **。)