2012-12-02 5 views
1

Avec cette structpointeur sur un tableau de pointeurs vers des noeuds

typedef struct tNode_t { 
    struct tNode_t **a; 
} tNode; 

Je veux être en mesure d'avoir a points à un tableau de 5 pointeurs vers tNodes

principal exemple:

int main() 
{ 
    tNode t; 
    tNode (*alpha)[5]; 
    t.a = alpha; 
} 

pourquoi cela ne fonctionne-t-il pas?

+0

Et qu'est-ce que le compilateur dit? ;-) Etes-vous sûr que vous avez déclaré alpha comme vous le souhaitiez? – Kylo

+0

Pourquoi ne pas simplement construire le tableau dans la structure? Si vous savez que la longueur est toujours '5':' struct tNode_t {struct tNode_t * a [5]; } ' – Lee

+0

@Kylo il ne compile pas et dit' warning: affectation de type pointeur incompatible' – emanyalpsid

Répondre

4

Ceci définit un pointeur vers un tableau de tNodes:

tNode (*alpha)[5]; 

Ceci définit un tableau de pointeurs vers tNodes:

tNode *alpha[5]; 
+0

Merci! Si confus au sujet des pointeurs et des choses – emanyalpsid

0

Dans votre code alpha et a sont des pointeurs vers des objets très différents. Et puisque les deux sont des pointeurs, comme vous les avez correctement définis, aucun déclin ne se produira. Seules les matrices se désintègrent donc alpha ne peut pas simplement se désintégrer à un autre type de pointeur.

Et pourquoi sont-ils si différents? Lorsque vous incrémentez un, il pointera sur le prochain struct tNode_t *. Lorsque vous incrémentez alpha, il pointera 5 struct tNode * plus loin.

Questions connexes