Adresse de pointeur en C tableau multidimensionnel

Je suis de déconner avec les tableaux multidimensionnels et des pointeurs. J'ai été à la recherche à un programme qui affiche le contenu d', et les adresses des, un simple tableau. Voici ma déclaration de tableau:

int zippo[4][2] = { {2,4},
            {6,8},
            {1,3},
            {5,7}   };

Ma compréhension est que zippo est un pointeur, et il peut contenir l'adresse d'un couple d'autres pointeurs. Par défaut, zippo contient l'adresse de pointeur zippo[0], et il peut également contenir les adresses des pointeurs zippo[1], zippo[2], et zippo[3].

Maintenant, prenez la déclaration suivante:

printf("zippo[0] = %p\n", zippo[0]);
printf("  *zippo = %p\n", *zippo);
printf("   zippo = %p\n", zippo);

Sur ma machine, qui donne le résultat suivant:

zippo[0] = 0x7fff170e2230
  *zippo = 0x7fff170e2230
   zippo = 0x7fff170e2230

J'ai parfaitement comprendre pourquoi zippo[0] et *zippo ont la même valeur. Ils sont tous les deux pointeurs, et ils ont à la fois de stocker l'adresse (par défaut) de l'entier 2, ou zippo[0][0]. Mais ce qui est à zippo aussi partage la même adresse mémoire? Ne devrait pas zippo stocker l'adresse du pointeur zippo[0]? Whaaaat?

  • En fait, je n'ai jamais touché de Java. J'ai brièvement mettre mes pieds dans l'eau avec BASIC et pascal, puis a sauté à droite dans avec C. C est la première et la seule langue que j'ai jamais vraiment essayé d'apprentissage. Qu'est-ce que Java de niveau plus élevé, et n'a donc pas besoin de traiter avec ce niveau de détail?
InformationsquelleAutor Ichimonji10 | 2010-01-05