0

Je viens de commencer à apprendre le C++. Je regardais un exemple de l'accès à un tableau et l'exemple a été comme suit:Pourquoi ne pas utiliser une boucle standard pour accéder à une matrice dynamique?

a[i][j]; 
*(&a[0] [0]+2*i+j); /* Base address */ 
*(*(a+i)+j); 

Je suis un peu confus au sujet de cet exemple. Pourquoi je ne peux pas simplement créer une boucle standard comme les suivantes:

for(int row=0; row<i; row++){ 
    for(int col=0; col<j; col++){ 
     // Do something 
    } 
} 
+1

* I * suis confus par cet exemple. Qui a écrit ce morceau de code merveilleusement obscurci? –

+0

Vous pouvez, l'exemple que vous montrez a été fait par quelqu'un dans les années 90 qui pensait encore être capable de développer du code que personne ne peut lire et qui est cryptique fait de vous un meilleur programmeur. Votre propre exemple est très bien. –

+0

D'où avez-vous eu cela? S'il vous plaît, arrêtez d'en apprendre quelque chose, quoi que ce soit. : D – MindRoller

Répondre

0

Votre exemple liste 3 méthodes différentes pour accéder à un objet à (vraisemblablement) le même index dans un tableau multidimensionnel. C'est quelque chose que vous feriez dans une boucle. Donc, soit faire:

for(int row=0; row<i; row++){ 
    for(int col=0; col<j; col++){ 
    auto field = a[col][row]; 
    } 
} 

OU

for(int row=0; row<i; row++){ 
    for(int col=0; col<j; col++){ 
    auto field = *(*(a+col)+row); 
    } 
} 

OU

for(int row=0; row<i; row++){ 
    for(int col=0; col<j; col++){ 
    auto field = *(&a[0] [0]+2*col+row); 
    } 
} 
0

En ce qui concerne l'accès à tout tableau 1 dimensions que je vois 2 options standard:

L'un d'eux est celui que votre réponse contient:

a[i] 

seconde:

*(a + i) 

Cependant, quand il s'agit de deux dimens réseaux ioniques, j'emploierais seulement des parenthèses:

a[i][j] 

Pourquoi? Du fait équivalent d'expression ci-dessus en utilisant des expressions de pointeur ressemble à ceci:

*(*(a + i) + j) 

Je suppose que Quasiment explicite.

Vous avez également demandé comment accéder aux éléments du tableau. Donc, je ne sais pas vraiment ce qu'est la partie avec des boucles ^^