Parcourir un tableau 2D

Résolu/Fermé
anthony - 6 mars 2010 à 20:48
 anthony - 7 mars 2010 à 11:57
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.

4 réponses

fiddy Messages postés 11067 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 812
7 mars 2010 à 11:06
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
ah ben oui c'est vrai merci de votre aide
0
Pico51 Messages postés 716 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 16 juillet 2019 69
6 mars 2010 à 20:50
Euh ... comment te dire ... c'est normal !

Tu comptes faire quoi exactement ?
0
ben on faite je veux afficher les valeurs du tableaux
0
Pico51 Messages postés 716 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 16 juillet 2019 69
6 mars 2010 à 21:42
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
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
Pico51 Messages postés 716 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 16 juillet 2019 69
7 mars 2010 à 10:30
C'est parce que, à aucun moment, tu ne fais pointer ptr vers le tableau multi.
0