未将指针列表正确传递给函数

Not passing a list of pointers correctly to a function

本文关键字:函数 指针 列表      更新时间:2023-10-16

这是我拥有的函数原型:

UINT8_t CTargetList::GetListOfTgts( CHAR_t Callsign[cTGT_MAX_CALLSIGN_CHAR],
   sTarget_t* ListOfTgtForCallsign[bNO_OF_TARGETS] );

现在,当我创建要传递给此函数的结构时

sTarget_t* TgtList[bNO_OF_TARGETS];
UINT8_t bRetTgts = list1.GetListOfTgts( "C1",&TgtList[bNO_OF_TARGETS]);

结构创建正确,但当我跟踪函数时,ListOfTgtForCallsign必须是指针数组。相反,ListOfTgtForCallsign只包含一个指针,而不是bNO_OF_TARGETS 。我希望指针列表TgtList作为ListOfTgtForCallsign参数正确传递。我做错了什么?

首先,TgtList是一个未初始化指针的数组。其次,您将传递数组最后一个元素之外的地址。

这就是你应该怎么称呼它。

UINT8_t bRetTgts = list1.GetListOfTgts( "C1", TgtList);

在 C++ 数组中是一种指针。您正在传递指向最后一个元素 (bNO_OF_TARGETS) 的指针 witch 也可以用作数组(这就是它通过编译的原因)。猜猜你需要的很简单:

sTarget_t* TgtList[bNO_OF_TARGETS];
UINT8_t bRetTgts = list1.GetListOfTgts( "C1", TgtList);
list1.GetListOfTgts( "C1", &TgtList[bNO_OF_TARGETS] );

,传递越界元素的地址。

应该只是list1.GetListOfTgts( "C1", TgtList );

此外,在函数原型中指定数组大小也不会执行您可能希望它执行的操作。