2013-04-24 2 views
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 (*) здесь вместо []?

+1

trchDetail [0] == * (trchDetail + 0). Это то, что вы имеете в виду?? – 999k

+0

В чем причина не использования [0]? – Marichyasana

ответ

1

Да, вы можете,

trchDl1p7kbps.trchDetail[0]->trchNo 

эквивалентен:

(*trchDl1p7kbps.trchDetail)->trchNo 

который также эквивалентен

(**trchDl1p7kbps.trchDetail).trchNo 

И нет структуры двойного разыменования оператора эквивалента структура дрефера nce->, поэтому вам нужно выбрать одну из этих обозначений.

Смежные вопросы