#1 Le 21/11/2008, à 17:22
- luron
[Résolu] C: pointeur et tableau à 2 dimensions
Salut tout le monde,
Je voudrais avoir une confirmation sur mon code:
#include <stdio.h>
void afficher(char *t, int nb)
{
int i;
for (i = 0; i < nb; i++)
{
printf("%c", *t);
t++;
}
return;
}
int main (void)
{
char tab[3][3] = {"aa", "bb", "cc"};
afficher((char *) tab, 9);
return 0;
}
J'appelle la fonction afficher avec comme premier argument (char *) tab. Ça reviendrait au même d'utiliser l'argument *tab, c'est bien ça? L'important, pour ne pas avoir d'avertissement lors de la compilation, c'est de ne pas passer comme argument tab tout seul, car le compilateur va être forcé de faire lui-même une conversion, à cause que tab tout seul est un pointeur constant vers un tableau tab[0], alors que tab[0] est un pointeur constant vers un char tab[0][0]. C'est bien ça?
Merci.
Dernière modification par luron (Le 21/11/2008, à 23:58)
Hors ligne
#2 Le 21/11/2008, à 17:26
- nicolas.sitbon
Re : [Résolu] C: pointeur et tableau à 2 dimensions
C'est crade mais ça reste correct d'un point de vue langage.
Hors ligne
#3 Le 21/11/2008, à 17:32
- luron
Re : [Résolu] C: pointeur et tableau à 2 dimensions
C'est crade mais ça reste correct d'un point de vue langage.
Oui, ben, là mon but c'est pas de faire du code génial, c'est juste de faire des tests avec les pointeurs et les tableaux pour bien comprendre le fonctionnement.
Hors ligne
#4 Le 21/11/2008, à 18:02
- nicolas.sitbon
Re : [Résolu] C: pointeur et tableau à 2 dimensions
#include <stdio.h>
#include <stddef.h>
static void afficher (char const * const tab, size_t nb)
{
for (size_t current = 0; current < nb; current++)
{
putchar (tab[current]);
}
fflush (stdout);
return;
}
int main (void)
{
char const tab[3][3] = {"aa", "bb", "cc"};
afficher ((char const *) tab, 9);
return 0;
}
Dernière modification par nicolas.sitbon (Le 21/11/2008, à 18:02)
Hors ligne
#5 Le 21/11/2008, à 23:57
- luron
Re : [Résolu] C: pointeur et tableau à 2 dimensions
En fait, j'ai trouvé ce que je voulais à cette adresse:
http://fr.wikibooks.org/wiki/Programmation_C/Tableaux#Conversion_des_noms_de_tableaux_en_pointeurs
Je mets en résolu.
Hors ligne
#6 Le 22/11/2008, à 08:17
- nicolas.sitbon
Re : [Résolu] C: pointeur et tableau à 2 dimensions
C'est la que tu prends tes infos? revois tes sources! Même si ce qui y est dit semble correcte, il n'y a aucune preuve, pas de renvoi vers la norme et pas d'explication sur le pourquoi du comment.
Un conseil: apprend la norme!
Hors ligne
#7 Le 22/11/2008, à 16:10
- luron
Re : [Résolu] C: pointeur et tableau à 2 dimensions
C'est la que tu prends tes infos? revois tes sources! Même si ce qui y est dit semble correcte, il n'y a aucune preuve, pas de renvoi vers la norme et pas d'explication sur le pourquoi du comment.
Un conseil: apprend la norme!
Salut,
Je suis quand même capable d'avoir un esprit critique sur ce que je lis et consulter plusieurs sources. Quand je fais de la recherche sur Internet, je regarde plusieurs références, et ya le c-faq.com qui est intéressant avec des références à la norme, ya le n1256.pdf qui donne une bonne idée, j'ai un cours sur le C à l'université, et puis je suis capable de tester ce que je lis pour m'en faire une idée.
Hors ligne
#8 Le 22/11/2008, à 17:06
- nicolas.sitbon
Re : [Résolu] C: pointeur et tableau à 2 dimensions
nicolas.sitbon a écrit :C'est la que tu prends tes infos? revois tes sources! Même si ce qui y est dit semble correcte, il n'y a aucune preuve, pas de renvoi vers la norme et pas d'explication sur le pourquoi du comment.
Un conseil: apprend la norme!et ya le c-faq.com qui est intéressant avec des références à la norme, ya le n1256.pdf qui donne une bonne idée, j'ai un cours sur le C à l'université, et puis je suis capable de tester ce que je lis pour m'en faire une idée.
Je retire ce que j'ai dis dans ce cas, désolé, néanmoins je ne suis pas convaincu que tu es compris le pourquoi des choses.
Hors ligne