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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| #include <stdlib.h>
#include <stdio.h>
int copie_originale(int **tab , size_t col, size_t row)
{
size_t i, j;
for(i=0 ; i<row ; i++)
{
for (j=0 ; j<col ; j++)
{
printf("%d\t", tab[i][j]);
}
printf("\n");
}
return 0;
}
int copie_alternative(int (*tab)[] , size_t col, size_t row)
{
size_t i, j;
for(i=0 ; i<row ; i++)
{
for (j=0 ; j<col ; j++)
{
printf("%d\t", (*tab+i*col)[j]);
}
printf("\n");
}
return 0;
}
int main(void)
{
int tabtab[4][5] = { {15, 1, 12, 8, 56}, {1, 1, 2, 8, 6}, {515, 31, 142, 28, 526}, {135, 21, 132, 833, 563} };
int * tabpt[5];
tabpt[0] = (int*) tabtab[0]; // j'explicite le cast implicite
tabpt[1] = tabtab[1];
tabpt[2] = tabtab[2];
tabpt[3] = tabtab[3];
tabpt[4] = tabtab[4];
/********************************/
puts("copie_originale OK : ");
copie_originale(tabpt, 5, 4);
puts("\ncopie_alternative OK : ");
copie_alternative(tabtab, 5, 4);
/********************************/
puts("copie_originale KO ! : ");
//copie_originale(tabtab, 5, 4); // warning pour des types incompatibles
// plante le programme
puts("\ncopie_alternative KO ! : ");
copie_alternative(tabpt, 5, 4); // warning idem , affiche n'importe quoi
return 0;
} |