Parcourir un tableau 2D

Résolu
Bonjour,
voila un code qui m'affiche des résultat bizzard:
#include <stdio.h>
#include <stdlib.h>
void tab2D(int (*ptr)[4]);
int main()
{
    int multi[2][4] = {{1,2,3,4},{5,6,7,8}};
    int (*ptr)[4], count;

    for(count = 0; count < 2; count++)
        tab2D(ptr++);
    return 0;
}

void tab2D(int (*ptr)[4])
{
    int *p, count;
    p = (int *)ptr;
    for(count = 0; count < 4; count++)
        printf("%d\n", *p++);
}


et voici ce que sa m'affiche:
-1
1996096541
110212869
0
2686956
1995873605
4199040
2130567168

Process returned 0 (0x0)   execution time : 0.011 s
Press any key to continue.
Configuration: Windows 7 / Firefox 3.5.8

4 réponses

  1. Contributeur
    Bonjour,

    Il manque tout simplement l'initialisation de ptr. Un simple ptr=multi; avant la boucle for dans le main, et ça devrait marcher.

    Cdlt,
    1
    1. ah ben oui c'est vrai merci de votre aide
      0
  2. Euh ... comment te dire ... c'est normal !

    Tu comptes faire quoi exactement ?
    0
    1. ben on faite je veux afficher les valeurs du tableaux
      0
  3. Bah alors, pourquoi créés-tu un tableau de pointeur ptr ? Il ne sert à rien d'autant plus qu'il n'a aucun rapport avec ton premier tableau.
    De plus, tu n'as pas besoin d'utiliser une fonction tab2D.

    Pour afficher un tableau à deux dimensions, voilà ce qu'il faut faire :
    - On fait une première boucle (for) correspondant à la première dimension du tableau.
    - On fait une deuxième boucle (for) correspondant à la deuxième dimension du tableau.
    - On affiche la valeur => printf("%d\n", tab[i][j]);

    Simplement.
    J'espère avoir été clair.
    0
    1. Oui c'est vrai je n'ai pas besoin de fonction mais bon j'ai décidé de séparer le code pour voir comment passer un tableau 2D a une fonction.
      Bah alors, pourquoi créés-tu un tableau de pointeur ptr

      Ce n'est pas un tableau pointeur c'est un pointeur pointant vers un "sous" tableau. Oui si j'enlève les paranthèses sa sera un tableau pointeur mais avec les paranthèse ce n'est pas un tableau pointeur, c'est un pointeur.
      ceci est un tableau pointeur:
      int *ptr[4]


      Je sais qu'il y a plus simple pour afficher les valeurs d'ailleurs j'y suis arriver à les afficher mais ici je veux savoir pourquoi il y a des valeur bizzard dans ce code.
      0
  4. C'est parce que, à aucun moment, tu ne fais pointer ptr vers le tableau multi.
    0