Accueil > Forum > > > > Probleme passage tab** de fonctions a fonction.
Probleme passage tab** de fonctions a fonction.
jeudi 12 novembre 2009 à 16:22:27 |
Probleme passage tab** de fonctions a fonction.

Nitrakz
|
Bonjour tous le monde !
Comme l'explique le titre j'ai un petit soucis pour passer un tableaux a 2 dimensions tab[i][j] d'une fonction a une autre.
int func_1
{
int tab[4][4];
tab[0][0] = 4;
func_2(tab);
}
int func_2(int **tab)
{
putchar(tab[0][0]);
}
j'ai un segmentation fault lors de l'affichage tu tab[0][0].
merci pour vos reponses.
There is no place like 127.0.0.1 /
|
|
jeudi 12 novembre 2009 à 16:37:04 |
Re : Probleme passage tab** de fonctions a fonction.

nickydaquick
|
Salut,
un tableau a 2 index est UN pointeur sur une zone de memoire. La tu utilises un pointeur sur un pointeur d'une zone de memoire comme argument dans la 2eme fonction (que tu devrais declarer plus haut), alors que tu lui passes tab , un tableau a 2 index.
Solution:
Code C/C++ : int func_2(int *tab)
{
putchar(tab[0]);
//calcul d'index a faire tab[a][b] = tab[a*dimensionIndex1+b]
}
int func_1()
{
int tab[4][4];
tab[0][0] = 4;
func_2((int*)tab);
}
Bonne continuation.
http://liveplayaz.com
je suis heureux de faire partie d'une grande famille ...!
|
|
jeudi 12 novembre 2009 à 16:58:14 |
Re : Probleme passage tab** de fonctions a fonction.

Nitrakz
|
Donc si j'ai bien compris:
tab[2][3] = tab[2*(4*4) + 3] ?
There is no place like 127.0.0.1 /
|
|
jeudi 12 novembre 2009 à 18:05:36 |
Re : Probleme passage tab** de fonctions a fonction.

Nitrakz
|
J'ai essayer avec ta technique, enfin comme je pensait l'avoir compris mais sans succès toujours cette saleté de segfault.
There is no place like 127.0.0.1 /
|
|
jeudi 12 novembre 2009 à 18:35:00 |
Re : Probleme passage tab** de fonctions a fonction.

BruNews
|
Formule générale:
p[L * NCLS + C] == T[L][C]
int tab[2][3];
int *p = (int*) tab;
donc:
tab[1][2] = p[1 * 3 + 2]
ciao...
BruNews, MVP VC++
|
|
jeudi 12 novembre 2009 à 19:12:46 |
Re : Probleme passage tab** de fonctions a fonction.

Nitrakz
|
yes okay good, je devrait m'en sortir avec ca :)
There is no place like 127.0.0.1 /
|
|
jeudi 12 novembre 2009 à 19:30:29 |
Re : Probleme passage tab** de fonctions a fonction.

CptPingu
|
Si tu veux vraiment passer un tableaux à deux dimension, il te faut passer les dimensions en argument:
Code C/C++ :
int display_tab(int **tab, int width, int height)
{
int i = 0;
int j = 0;
for (i = 0; i < width; ++i)
for (j = 0; j < height; ++j)
printf("tab[%i][%i] = %i\n", i, j, tab[i][j]);
}
int main()
{
int i = 0;
int** tab = NULL;
int width = 4;
int height = 3;
tab = malloc(width * sizeof (int*));
for (i = 0; i < width; ++i)
{
tab[i] = malloc(height * sizeof (int));
for (j = 0; j < width; ++j)
tab[i][j] = i + j;
}
display_tab(tab, width, height);
}
A noter que int* et int[] peuvent être manier de la même façon, mais pas int** et int[][], d'où ton segmentation fault.
Une autre solution pour ne pas avoir à passer les dimensions, est d'encapsuler celles-ci dans une structure, ou de terminer chacun des tableau par un marqueur (NULL par exemple).
|
|
jeudi 12 novembre 2009 à 19:31:51 |
Re : Probleme passage tab** de fonctions a fonction.

Nitrakz
|
Hum c'est bizarre ca marche mais uniquement pour la premiere ligne du tableau, les autres n'ont pas l'air davoir ete transmise.
*mod searcher*
There is no place like 127.0.0.1 /
|
|
jeudi 12 novembre 2009 à 19:57:15 |
Re : Probleme passage tab** de fonctions a fonction.

Nitrakz
|
Tu pense que sa viens du fait que je declare le tableaux en dur (tab[9][9])?
There is no place like 127.0.0.1 /
|
|
jeudi 12 novembre 2009 à 23:42:21 |
Re : Probleme passage tab** de fonctions a fonction.

CptPingu
|
"int** tab" est différent de "int tab[][]".
Donc tu ne peux pas passer un tableau en dur à la fonction "display_tab" que j'ai écrite.
|
|
Cette discussion est classée dans : fonction, int, probleme, tab, func
Répondre à ce message
Sujets en rapport avec ce message
Pas compris les arguments [ par Bog ]
Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c
Pas compris les arguments [ par Bog ]
Bonjour.Voila à chaque fois que je me lance dans un projet de programmation C++, je suis tjrs bloqué par certaines choses, surtout les arguments, et c
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
probleme avec la fonction GetAsyncKeyState() [ par aardman ]
Bonjours,Je débute dans le c, et j'ai un petit probleme avec cette fonction.Je n'arrive pas a la faire fonctionner avec un int comme argument. Par exe
Probleme avec les threads en C++ sour linux [ par benjamvs ]
Bonjour,j'ai le probleme suivant a regler en C++je travaille sur les threads sous linux, avec la librairie "pthread"Lorsque je crée un thread, celui c
Allocation dynamique dans une fonction [ par Veovis ]
Salut,Toujours dans mon projet de TP, j'ai un petit soucis avec l'allocation dynamique dans une fonction. Ce que je voudrais faire c'est quand le tabl
Tableau en C [ par Mickylord ]
Bonsoir a tous !Voici ma question :J'ai une fonction principale, main(), et une autre fonction tab(). Je voudrais déclarer un tableau dans la fonction
probleme de pointeur [ par jypees ]
Bonjour a tous. Voila j'ai l'habitude de faire de la prog sur unix et la je viens de me lancer sur windows (lol) et j'ai un petit probleme car je ne s
Probleme pour une boucle en C++ [ par Liquid043 ]
De facon simple ce que j'essaie de faire c'est de générer 6 nombre aléatoire compris entre 1 et 49 tout en evitant que dans une série deux numéros se
probleme de dll [ par lamoueste ]
j'ai un probleme avec ma dll : il s'agit d'une fonction qui doit lance une fenetre (dialog box ) en modal mais j'ai une "assertion failed" :( et je ne
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|