0

我这里有代码流。请trchDl1p7kbps.trchDetail[0]->trchNo = 0;在以下代码中给我替代解决方案

struct trchParam_ 
    {
    unsigned int trchNo;
    };
typedef struct trchParam_ trchParam;

struct trchDetail_
    {
    trchParam **trchDetail;
    };
typedef struct trchDetail_ trchDetail;

int main(void)
{
            trchDetail trchDl1p7kbps;
        trchDl1p7kbps.trchDetail = (trchParam **)malloc(sizeof(trchParam **) * 1);
        *trchDl1p7kbps.trchDetail = (trchParam *)malloc(sizeof(trchParam *));
            trchDl1p7kbps.trchDetail[0]->trchNo = 0;
}

如何避免数组表示法?我可以在这里使用pointer( *) 代替[]吗?

4

1 回答 1

1

是的你可以,

trchDl1p7kbps.trchDetail[0]->trchNo

相当于:

(*trchDl1p7kbps.trchDetail)->trchNo

这也相当于

(**trchDl1p7kbps.trchDetail).trchNo

并且没有与结构取消引用运算符等效的结构双重取消引用运算->,因此您必须选择其中一种表示法。

于 2013-04-24T11:21:41.770 回答