Les pointeurs tableau 2D , urgent

Fermé
salahuiste Messages postés 11 Date d'inscription mardi 20 décembre 2016 Statut Membre Dernière intervention 15 avril 2017 - Modifié par noctambule28 le 13/01/2017 à 13:57
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 - 9 janv. 2017 à 17:48
salut a tous , j'arrive pas a comprendre quelques instructions de ce code , j'espere que vous allez me aider parceque j'aurai un exam proche ...
_______________________________________
#include <stdio.h>
#include <stdlib.h>


int main() {
int b[3][5]; 
int *a = *b, ii,i; 
for (i=0 ; i<15 ; *a++ = i++)  ; 

printf("\n"); 
for (i=0 ; i<3 ; i++) { 
for (ii=0 ; ii<5 ; ii++) 
    printf("%2d ",*(*(b+i)+ii)); 
    printf("\n"); 
} 


*
**b = 15;      **(b+1) = 16;        *(b[0]+1) = 17; 

*(*b+8) = 18;    *(b[1]+2) = 19;   *(*(b+1)+5) = 20; 

*(b[2]+3) = 21;     *(*(b+2)+2) = 22; 

for (i=0 ; i<3 ; i++) { 
for (ii=0 ; ii<5 ; ii++) 
    printf("%2d ",*(*(b+i)+ii)); 
    printf("\n"); 
} 

return 0;
}

_______________________
j'ai pa compris ça, les instructions suivantes vont faire quoi?
1) int *a = *b;

2)for (i=0 ; i<15 ; *a++ = i++) ;
ici pourquoi le contenu de les cases de b étaient changé ?
3) *(*b+8) quel case?

1 réponse

[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
9 janv. 2017 à 17:48
Salut,

1) int *a = *b;

tout d'abord, comme on a définit
int b[3][5];
, b se comporte comme un pointeur sur un tableau de 5 int

en déréférençant ce pointeur (on fait *b), cette expression se réfère à un tableau de 5 int, lequel se comporte comme un pointeur sur int, pointant vers le premier élément de ce tableau

donc, a est un pointeur sur int, auquel on affecte l'adresse vers le premier élément du tableau bidimensionnel b

c'est un moyen d’aplatir un tableau bidimensionnel en C

2)for (i=0 ; i<15 ; *a++ = i++) ;
ici pourquoi le contenu de les cases de b étaient changé ?


pour la raison expliquée en a)

3) *(*b+8) quel case?

le 9ème élément du tableau, soit l'élément b[1,3]


Dal
-1