Parcourir un tableau 2D

Résolu
anthony -  
 anthony -
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.
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
anthony
 
ah ben oui c'est vrai merci de votre aide
0
Pico51 Messages postés 716 Date d'inscription   Statut Membre Dernière intervention   69
 
Euh ... comment te dire ... c'est normal !

Tu comptes faire quoi exactement ?
0
anthony
 
ben on faite je veux afficher les valeurs du tableaux
0
Pico51 Messages postés 716 Date d'inscription   Statut Membre Dernière intervention   69
 
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
anthony
 
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   Statut Membre Dernière intervention   69
 
C'est parce que, à aucun moment, tu ne fais pointer ptr vers le tableau multi.
0