Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/11/2008, à 18: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 22/11/2008, à 00:58)

Hors ligne

#2 Le 21/11/2008, à 18: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, à 18:32

luron

Re : [Résolu] C: pointeur et tableau à 2 dimensions

nicolas.sitbon a écrit :

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, à 19: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, à 19:02)

Hors ligne

#5 Le 22/11/2008, à 00: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, à 09: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, à 17:10

luron

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!

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, à 18:06

nicolas.sitbon

Re : [Résolu] C: pointeur et tableau à 2 dimensions

luron a écrit :
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