Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[RESOLU]aide : tableau en parametres de fonction en C


Messages recommandés

Posté(e) (modifié)

Bonjour,

 

Ayant pas bcp de base en C et ne trouvant pas ce que je cherche sur internet, je le pose sur ce forum ...

 

Donc mon problème j'aimerai passer en paramètres de fonction un tableau à deux dimensions.

 

Exemple :

//Déclarations des fonctions
void maFonction(s8[][]);

//Fontions
maFonction(s8 tab[6][6])
{
 s8 newGrille[6][6];
 memcpy(newGrille, tab, sizeof(tab));
}
//fin Fonctions

int main()
{
 s8 grille[6][6];

 u8 i = 0;
 u8 j = 0;
 for (i=0; i<6; i++)
 {
 for (j=0; j<6; j++)
 {
	 grille[i][j] = 0;
 }
 }
 maFonction(grille);
}

 

C'est comme ca que je vois les choses, mais cela ne marche pas, je ne sais pas quoi mettre comme paramètres dans la déclaration de la fonction, maFonction?

Si vous voyez mon erreur, ca m'aiderai vraiment, Merci.

 

--

n3j1

Modifié par n3j1

Posté(e)

Salut,

Je pense qu'il y a beaucoup d'amalgame qui sont fait.

Si j'ai bien compris tu essaye de passer un tableau à une fonction ?

 

Ton code devrait donc ressembler à: (code non testé mais je pense pas qu'il y ai de soucis)

void myShow(int *myTab, int size)
{
int count;

for (count = 0; count < size; count++) // Pour chaque entrée du tableau
	printf("%d-", myTab[count]); // Afficher la valeur de l'entrée
printf("\n"); //Juste pour que chaque tableau s'affiche sur une seule ligne (plus facile à lire)
return;
}

void myFunc(int *myTab, int size)
{
int count;

for (count = 0; count < size; count++) //Pour chaque entrée du tableau
	myTab[count] = 42; //Changer la valeur par 42
return;
}

int main(void)
{
int myTab[4] = {1, 2, 3}; //On crée un tableau de base et on le rempli

myShow(myTab, 4); //On affiche le tableau pour voir ce qu'il contient
myFunc(myTab, 4); //On change les valeurs du tableau
myShow(myTab, 4); //On affiche le nouveau tableau pour voir s'il a bien été modifié.
return 0;
}

 

Qu'est ce qui ne va pas dans ton code?

- tu confond un tableau et un pointeur.

- tu déclare mal ton tableau (mais c'est qu'un demi mal)

- tu déclare mal tes fonctions (et il manque un typedef de s8 quelques pars)

- tu utilises mal les prototypes (il est inutile de prototype ta fonction si tu la place avant ton main)

 

Lien utile:

Les cours du sdz t'aideront certainement, je pense qu'il faut (re)lire le chapitre 9 de la première partie ainsi que l'ensemble de la seconde partie

 

Explication rapide sur le problème des tableaux:

Tu tente de passé un tableau à une fonction alors que tu dois lui passer un pointeur et travailler avec ce pointeur.

 

J'espère avoir été le plus claire et concis possible.

si tu as des questions n'hésite pas.

 

Hanlon,

Posté(e)

Merci beaucoup pour vos réponse et pour tes liens, le tuto sur SDZ est super bien foutu, je ne le connaissais pas.

 

Je vais tester aujourd'hui surement, ca devrais le faire ... encore merci

 

--

n3j1

Posté(e) (modifié)

Si tu cherches une bonne doc sur le C, pour t'initier (mais aussi avoir un bon book de référence), je ne peux que te conseiller l'excellent "Le langage C" par Brian W. Kernighan et Dennis M. Ritchie (les auteurs du C). soit la version originale (en anglais) ou sa traduction en français (éd. Masson). Cet ouvrage reste la référence en la matière (mieux vaut prendre la doc des auteurs).

Une petite lecture du wiki te donnera qq infos utiles sur ce langage. :P

 

Si tu veux écrire "propre", il y a les deux références (conventions d'écriture) OpenBSD/style et FreeBSD/style. L'interêt du respect de ces conventions d'écriture est que tu n'aura jamais de problème à te relire (et là tu peux en croire ma longue expérience - voire ma page d'accueil), ni aucun soucis pour être lu/compris par d'autres programmeurs. Il faut mieux prendre de bonnes habitudes dès le début.

 

++

Modifié par zebuntu

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...