C 函数接受结构的空指针,并将指向其成员的指针传递给另一个函数

C 函数接受结构的空指针,并将指向其成员的指针传递给另一个函数,c,pointers,struct,C,Pointers,Struct,是的,标题和我一样令人困惑。代码可能有助于显示我试图实现的目标 在函数中,我传递这个 RESTOUCH_POINT_STRUCT stConvertPoint; stConvertPoint.usX = astLCDPoints[0].usX; stConvertPoint.usY = astLCDPoints[0].usY; Driver_Control((DRIVER_STRUCT*)pstResTouch->pstDisplay, CMD_CONVERT_POINT_TO_ORI

是的,标题和我一样令人困惑。代码可能有助于显示我试图实现的目标

在函数中,我传递这个

RESTOUCH_POINT_STRUCT stConvertPoint;

stConvertPoint.usX = astLCDPoints[0].usX;
stConvertPoint.usY = astLCDPoints[0].usY;

Driver_Control((DRIVER_STRUCT*)pstResTouch->pstDisplay, CMD_CONVERT_POINT_TO_ORIENTATION, &stConvertPoint);
接收驱动程序函数需要接受
stConvertPoint
的地址作为无效指针,然后将其强制转换以获取指向其成员
usX
usY
的指针。然后将其传递给一个内部函数,该函数更改
usX
usY
的值

DRIVER_RETURN ILI9328_Control(DRIVER_STRUCT *pstDriver_, USHORT usID_, void *pvData_)
{
...
case CMD_CONVERT_POINT_TO_ORIENTATION:
{
  DRAW_POINT_STRUCT* pstPoint = (DRAW_POINT_STRUCT*)pvData_;
  USHORT *pusX;
  USHORT *pusY;

  pusX = (USHORT*)pstPoint->usX;
  pusY = (USHORT*)pstPoint->usY;

  ILI9328_ConvertPointOrientation(pstDriver_, pusX, pusY);
}
break;
假设所有这些都能工作,调用函数中的
stConvertPoint.usX
stConvertPoint.usY
的值现在应该不同了

这有可能吗?指针和引用总是让我感到非常困惑。

假设(按照命名约定),
usX
usY
成员只是
无符号短的
(它们不是指针),那么您不希望:

这将创建无效和无用的指针

相反,您希望:

pusX = &pstPoint->usX;
pusY = &pstPoint->usY;
它们是指向结构的两个成员的指针

pusX = &pstPoint->usX;
pusY = &pstPoint->usY;