Les pointeurs tableau 2D , urgent
salahuiste
Messages postés
12
Statut
Membre
-
[Dal] Messages postés 6373 Statut Contributeur -
[Dal] Messages postés 6373 Statut Contributeur -
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 ...
_______________________________________
_______________________
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?
_______________________________________
#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?
A voir également:
- Les pointeurs tableau 2D , urgent
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
1 réponse
Salut,
1) int *a = *b;
tout d'abord, comme on a définit
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) 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