Salut
Effectivement, dans le code que tu nous présentes il n'y a aucun calcul pour réordonner le tableau mais c'est parce que le tableau "arrayA" est déjà trié vu que tu l'as rempli avec les entiers naturels !!!
Alors que si tu prends ton tableau initial
ArrayA = { 1 , 10 , 2 , 11 , 3 , 12}, que tu fasses une recopie des nombres ou que tu pointes les cases contenant leur adresse, tu es quand-même obligé de faire un algo pour les trier. Ou alors c'est que j'ai rien compris à cette phrase
Effectivement, le seul avantage que tu auras à passer par des pointeurs c'est qu'il n'y a au final qu'un seul tableau de valeurs. Et donc la modification du contenu du tableau est répercutée quand on l'affiche par les pointeurs...
Accessoirement, dans ton exemple les malloc sont inutiles
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include <stdio.h>
#include <stdlib.h>
int main(void) {
int arrayA[6];
int* arrayB[3];
int* arrayC[3];
int i;
//initialisation de arrayA pour l'exemple
for(i=0;i<6;i++){
arrayA[i]=i;
}
//La partie intéressante, on recopie les adresses dans les deux tableaux
for(i=0;i<3;i++){
arrayB[i]=arrayA+i;
arrayC[i]=arrayA+i+3;
}
//Affichage avec les premieres valeurs
for(i=0;i<3;i++){
printf("arrayB[%d] : %d\narrayC[%d] : %d\n\n",i,*arrayB[i],i,*arrayC[i]);
}
//On modifie arrayA
arrayA[0]=3;
arrayA[4]=40;
//Repercution sur B et C
for(i=0;i<3;i++){
printf("arrayB[%d] : %d\narrayC[%d] : %d\n\n",i,*arrayB[i],i,*arrayC[i]);
}
return 0;
} |