begin process at 2010 02 10 00:06:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

Passage d'un tableau a X dimensions a une fonction et ANSI


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Passage d'un tableau a X dimensions a une fonction et ANSI

mardi 18 novembre 2008 à 12:20:53 | Passage d'un tableau a X dimensions a une fonction et ANSI

AsM0DeUz

Membre Club
Bonjour,

J'aurai besoin d'un petit eclaircissement dans le cas ci dessous (c'est juste un exemple) :

#include <stdio.h>
  2
  3 void filltab(int, int *, int, int);
  4 void printok(int, int *, int, int);
  5
  6 int main()
  7 {
  8         int tab[3][2] = {{0,0},{0,0},{0,0}};
  9         filltab(5, tab, 3 , 2);
 10         printok(5, tab, 3 , 2);
 11 }
 12
 13 void filltab(int number, int *tab, int line, int column)
 14 {
 15         int i;
 16
 17         for (i=0; i < line*column; i++)
 18                 *(tab+i) = number;
 19 }
 20
 21 void printok(int number, int *tab, int line, int column)
 22 {
 23         int i;
 24
 25         for (i=0; i < line*column; i++)
 26                 if(*(tab+i) == number)
 27                         printf("OK");
 28 }


Lors de la compilation avec gcc j'ai le message suivant :

gcc -ansi test.c
test.c: In function 'main':
test.c:9: warning: passing argument 2 of 'filltab' from incompatible pointer type
test.c:10: warning: passing argument 2 of 'printok' from incompatible pointer type

donc si dans les lignes 9 et 10 je cast (int *), je n'ai plus le probleme.

 9         filltab(5, (int *)tab, 3 , 2);
10         printok(5, (int *)tab, 3 , 2);


Apres m'etre renseigné a gauche et a droite, certains disent que ca vient du compilateur qui ne repondrait pas à la norme ANSI qui dirait qu'un tableau tab[] et *tab c'est la meme chose (qu'il y ait X dimensions vu qu'en mémoire toutes les cases se suivent). Pourtant lors de la compil je mets bien -ansi ce qui me semble devrait régler le problème.

Est ce bien un probleme (ou non suivi de la norme ANSI) de compilateur ?

Merci




mardi 18 novembre 2008 à 13:32:30 | Re : Passage d'un tableau a X dimensions a une fonction et ANSI

nhervagault

Administrateur CodeS-SourceS
Salut

Normalement tu as deux choix

Bon coding


cas 1
void
test (int **tab, int len_in, int len_out) {
for  (int i = 0; i < len_out; i++)
     for (int j = 0; j < len_in; j++)
           cout<<tab[i][j];
}

int
main () {
int **tab;
//initialisation
test (tab);
}


cas 2

void
test (int tab[][], int len_in, int len_out) {
for  (int i = 0; i < len_out; i++)
     for (int j = 0; j < len_in; j++)
           cout<<tab[i][j];
}

int
main () {
int tab[][];
//initialisation
test (tab);
}
mardi 18 novembre 2008 à 15:39:14 | Re : Passage d'un tableau a X dimensions a une fonction et ANSI

AsM0DeUz

Membre Club
Salut

Normalement tu as deux choix

Bon coding


Merci pour cette reponse meme si elle ne reponds pas vraiment a ma question

Pq ces 2 solutions seraient meilleures ? le (int *) fonctionne tres bien, sans aussi d'ailleurs mais y a des warnings.

C'est plutot une réponse théorique que je cherche quitte à ce qu'on me renvoie vers un page des specs ANSI ou autre

Merci

mardi 18 novembre 2008 à 21:06:03 | Re : Passage d'un tableau a X dimensions a une fonction et ANSI

julienbj

Salut,

int *tab et int tab[] sont bien la même choses.
ce qui est différent c'est int *tab et int tab[n][m] (qui est identique int **tab).
La présence de warning est donc bien normal. Un cast pour indiquer au compilo que tu sais ce que tu fais les fera disparaitre.

--
Vive le C
Savon


Cette discussion est classée dans : int, tab, ansi, filltab, printok


Répondre à ce message

Sujets en rapport avec ce message

lire dans un fichier [ par skeul ] Bonjour,je rencontre qqs difficultés a faire une fonction qui lit un fichier et qui rentre la chaine de caractere dans un tableauy a comme un probleme Pb Tableaux et initialisation. [ par AstraDeon ] Bonjour,Voila je tentais une simple initinitialisation d'un tableau bidimensionnel, mais j'ai pas le resultat escomptsS, voici le code :#include int m gotoxy ANSI-C [ par DJeS ] en tant qu'utilisateur de linux, je n'ai pas accesa la librairie conio.h (pourtant bien pratique)j'aimerai connaitre la(les) fonction(s) equivalentes fonction d'alloaction dynamique [ par tomsawyerbelgique ] Pour une allocation dynamique d'un tableau à deux dimensions. Comme celle ci:cout // Initalisation int** tab = new int*[p_size1_tab]; for(in Blem Somme ELmt d'un Tableau Bidimensionnel [ par Orezza ] Slt c encore moi, le boulet de l'info...c tjrs le meme prog mais cette fois ci j'aimerais afficher la somme des elmts de mon tableaux.#include #includ GetAsyncKeyState [ par sebleboss2002 ] Bon, c'est encore moi, ce coup-ci, j'ai trouvé (plus ou moins) comment faire ce que je voulais :#include #include <br Algo trop lent :( [ par MoDDiB ] Bon tout d'abord je tient à préciser qu'il s'agit du concours prologin auquel je compte participer donc si certaines personnes ne veulent pas m'aider Mais Pkoi un erreur ?! [ par Orezza ] OrezzaBonjour voila encore une de mes sources Bidon, je le sais je debute mais pkoi mon compilateur indique une erreur je ne vois vraiment pas.je vous tableau char [ par dingue007 ] Voila je dois faire un prog en C++ : un tableau avec les mois de lannée et quand je tape un chiffre il me sort le mois ! mais je narrive pas a faire l Mon code ne marche pô ! [ par xavier59 ] Mon code ne marche pas !Merci de m'aider !!!**************************************************# include # include int main(){ int tab[5]; int i; int t


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales