Langage C_ larger et longueur tableaux

Fermé
tati29 - 30 déc. 2009 à 20:29
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 31 déc. 2009 à 00:53
Bonjour,
je programme et je débute ; et j'ai une question toute bête à vous poser.
On me donne en C un tableau tab[][] pour une fonction et j'aimerais en savoir la longueur et la largeur;
Pouvez-vous m'aider ?
En l'attente de votre réponse,
Bonne soirée

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
30 déc. 2009 à 23:14
Salut,
Tu souhaites calculer la longueur et la largeur du tableau dans la fonction où il a été défini ? Ou tu souhaites les calculer dans la fonction où tu envoies le tableau en argument ?

SI c'est la première proposition, tu t'en sors facilement avec les sizeof. Si c'est la seconde proposition, ce n'est pas possible, il faut que tu envoies la première dimension du tableau en argument, la seconde peut se retrouver avec les sizeof.

Précise moi de quels cas tu parles, et je peux te faire un exemple si tu veux.

Cdlt,
0
c'est à tableau que je passe en argument qui représente une image en deux couleurs.
J'applique à cette image (ou le contenu du tableau) une rotation pour la redresser puis une homothétie pour la contenir dans un nouveau tableau 64*64.
C"est pour cette homothétie que j'ai besoin des dimensions du tableau passé en argument.

savez-vous ce que donnerai length(tab) ?

Merci pour votre réponse
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
31 déc. 2009 à 00:53
Dans ce cas, tu devras impérativement passer au minimum la première dimension en argument. Il n'est pas possible en C de la retrouver. La seconde dimension pourra être retrouvée.
Le prototype de ta fonction sera donc du style (au minimum) : void fonction(int tab[][NB_COL], const int ligne);
avec #define NB_COL 15 (par exemple).
Pour retrouver NB_COL par le calcul (pas très utile ici), il suffit de faire sizeof *tab/sizeof **tab
Mais autant envoyer le nombre de ligne et de colonne en argument. Par exemple : void fonction(int tab[][NB_COL], const int ligne, const int colonne);
Ainsi tu y accès facilement dans ta fonction.

length(tab)
length n'existe pas en C. Peut-être veux-tu dire sizeof tab
sizeof tab au sein de la fonction recevant le tableau en argument, te retournera la taille d'une adresse en byte. Dans la fonction où ton tableau est définie, cela te renverra la taille que prend le tableau en byte.
0