在跟踪代码中有个地方不太明白,求各位大佬指教

RADARDEMO_clusterTracker_errorCode    RADARDEMO_clusterTracker_run(
                            IN  void * handle,
                            IN  RADARDEMO_tracker_input * input,
                            IN  float dt,
                            OUT RADARDEMO_tracker_output * output)

{
    uint32_t index;
    uint16_t nTrack, i;
    RADARDEMO_clusterTracker_handle *clusterTrackerInst;//RADARDEMO_clusterTracker_handle是一个结构体
    RADARDEMO_clusterTracker_errorCode errorCode = RADARDEMO_CLUSTERTRACKER_NO_ERROR;

    clusterTrackerInst    =   (RADARDEMO_clusterTracker_handle *) handle;//这里有疑问?上面已经用结构体RADARDEMO_clusterTracker_handle定义了指针,这里为什么又要重复,是为了把handle这个指针类型由void转为结构体类型了吗?
    clusterTrackerInst->numOfInputMeasure = input->totalNumInput;

。............中间略去了一些无关代码

    // Create measurements initialize pendingIndication, associationList, numAssoc and distance matrix
    index = 0;
    clusterTrackerInst->pendingIndication = (uint16_t *) &clusterTrackerInst->scratchPad[index];//这里疑问??scratchPad是结构体中的一个char类型指针,这里为什么要类型转换后,要令指针pendingIndication等于scratchPad,另外想问下指针后面加【】是干嘛的?
    for (i = 0; i < RADARDEMO_CT_MAX_NUM_TRACKER; i++)
        clusterTrackerInst->pendingIndication[i] = 1;//这里的疑问是指针pendingIndication后面的【】,指针类型为uint16_t,这里要循环64次??
    index += RADARDEMO_CT_MAX_NUM_TRACKER * sizeof(uint16_t);
    
    clusterTrackerInst->associatedList = (int16_t *) &clusterTrackerInst->scratchPad[index];
    for (i = 0; i < RADARDEMO_CT_MAX_NUM_TRACKER * RADARDEMO_CT_MAX_NUM_ASSOC; i++)
        clusterTrackerInst->associatedList[i] = -1;    
    index += RADARDEMO_CT_MAX_NUM_TRACKER * RADARDEMO_CT_MAX_NUM_ASSOC * sizeof(int16_t);

我的疑问都写在代码中,请求各位大佬不吝指教

  • user6231379 说:
    clusterTrackerInst    =   (RADARDEMO_clusterTracker_handle *) handle;//这里有疑问?上面已经用结构体RADARDEMO_clusterTracker_handle定义了指针,这里为什么又要重复,是为了把handle这个指针类型由void转为结构体类型了吗?

    user6231379 说:
    clusterTrackerInst->pendingIndication = (uint16_t *) &clusterTrackerInst->scratchPad[index];//这里疑问??scratchPad是结构体中的一个char类型指针,这里为什么要类型转换后,要令指针pendingIndication等于scratchPad,另外想问下指针后面加【】是干嘛的?

    赋值时,等式左右两边的类型需要一致。

    user6231379 说:
     for (i = 0; i < RADARDEMO_CT_MAX_NUM_TRACKER; i++)
            clusterTrackerInst->pendingIndication[i] = 1;//这里的疑问是指针pendingIndication后面的【】,指针类型为uint16_t,这里要循环64次??

    这个代码时初始化pendingIndication参数,循环次数时可能最大的tracker数。

  • 想问下这里指针后面加[]是 ps[i] 等价于 *(ps+i)吗?
  • 你好,

    网上有很多资源,建议多搜索。
    www.uucan.cn/zs-sywfawdff.html