Accueil > Forum > > > > Passer un tableau dynamique en paramètre
Passer un tableau dynamique en paramètre
vendredi 5 août 2005 à 12:39:30 |
Passer un tableau dynamique en paramètre

freepouy18
|
Salut tlm! J'aimerais savoir si je peux ou non passer en paramètre un tableau dynamique dont je n'ai pas encore alloué de mémoire(allocation à l'intérieur de la fonction). En gros, voila ce que je veux faire :
//variables globales CString *tab; CString *temp; CString machaine = "test"; int nombre_element = 0;
void SetDynaArray(int &nb_element, CString tab[], CString temp[], CString elt) { if (nb_element) { tab= new CString[nb_element+1]; for (int i=0; i<nb_element; i++) tab[i] = temp[i]; temp = tab; } else temp = new CString; { temp[nb_element++] = elt; } } Appel de la méthode : SetDynaArray(nombre_element, tab, temp, machaine);
Y a-t-il des erreurs et surtout comment puis-je régler mon probleme de tableau dynamique?
Merci
|
|
vendredi 5 août 2005 à 13:42:09 |
Re : Passer un tableau dynamique en paramètre

Galmiza
|
Salut,
BYTE *pByte; AllocateMemoryForpByte(&pByte); delete [] pByte;
avec: void AllocateMemoryForpByte(BYTE **ppData) { *ppData = new BYTE[256]; }
|
|
vendredi 5 août 2005 à 13:45:33 |
Re : Passer un tableau dynamique en paramètre

AlexMAN
|
Je ne vois aucun probleme a faire ca. Par contre, si les variables que tu passes en param sont 'globales', il n'y a aucun interet a faire ceci, puis ce que tu pourras acceder a celles-ci a l'interieur de la fonction que tu appelles. C'est ca ton probleme d'allocation dynamique ?
+2(p - n)
|
|
vendredi 5 août 2005 à 13:48:17 |
Re : Passer un tableau dynamique en paramètre

bathof
|
Salut,
tu peux passer sans problèmes un tableau dynamique en paramètre, mais il y a des choses à savoir.
Quand tu crées un tableau dynamique tu crées en fait une zone mémoire pour ton tableau dans la mémoire vive qui est pointée par un pointeur du même type, donc CString* tableau, n'est pas un tableau mais un pointeur sur l'adresse de la première case mémoire de ta zone alloué.
Alors pour passer un tableau dynamique en paramètre tu passes un pointeur sur la zone mémoire concernée.
Quand tu fais : tableau = new CString [10]; tu crées la zone mémoire pour ton tableau de 10 de type CString et "new" vas te retourné l'adresse au pointeur tableau.
Attention n'oublie pas de supprimer ta zone mémoire quand tu ne l'utilise plus, car si tu ne détruits pas les tableaux systématiquement la mémoire vive vas saturée. Ex : delete [] tableau;
Ex programme :
void creat(char* tab) { tab = new char[11]; }
void main() { char* tableau = NULL;
creat(tableau);
delete [] tableau; }
++ et bonne chance.
|
|
vendredi 5 août 2005 à 13:59:28 |
Re : Passer un tableau dynamique en paramètre

buno
|
Moi, je passerais les pointeurs, comme ceci:
void SetDynaArray(int &nb_element, CString *tab, CString *temp, CString elt)
Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
vendredi 5 août 2005 à 14:08:30 |
Re : Passer un tableau dynamique en paramètre

xterminhate
|
Bathof, si ton explication est juste, tu es malheureusement l'auteur d'une belle fuite de mémoire avec ton code donné comme exemple.
Le prototype correct de ta fonction est "void( char * & tab )". Tu vois pourquoi ? Je sais qu'on ne peut pas modifier son post et c'est bien dommage.
Ca rejoint un topic déjà existant et tres récent. Le passage par référence rend l'écriture plus sympathique. La solution proposée par Galmiza est ok si on tient à faire un passage par pointeur (du pointeur [sic!]).
|
|
vendredi 5 août 2005 à 14:09:34 |
Re : Passer un tableau dynamique en paramètre

xterminhate
|
Bruno, je crains que tu sois confronté à des fuites....
|
|
vendredi 5 août 2005 à 15:03:18 |
Re : Passer un tableau dynamique en paramètre

bathof
|
Je crois que j'ai fais just car :
char* tab;
tab = &tab;
donc j'init le poiteur tab de la fonction par l'adresse de tableau de la fonction.
char* tab = tableau;
est egale a
char* tab = &tableau;
Mais je retiens, merci et a +
|
|
vendredi 5 août 2005 à 15:12:55 |
Re : Passer un tableau dynamique en paramètre

bathof
|
A oui désolé, tu as raison, j'ai fais une gourde. Merci et a plus.
Correction :
void creat(char** tab){ *tab = new char[10]; }
int main() { char* tableau;
creat(&tableau); }
|
|
vendredi 5 août 2005 à 15:14:48 |
Re : Passer un tableau dynamique en paramètre

xterminhate
|
J'ai rien compris. Pour t'en convraince, tu remarqueras que dans ton code, apres l'appel de creat(), tableau est tjs égale à 0. Il n'est pas modifié dans le contexte appelant....
|
|
Cette discussion est classée dans : tableau, temp, element, tab, cstring
Répondre à ce message
Sujets en rapport avec ce message
DEPLACER TOUS LES ELEMENT DUN TABLEAU A 2 DIMENSIONS [ par retaks666 ]
j'aimerais savoir si il existe un fonction qui permet de deplacer tous les element d'un tableau d'une "ligne".exemple char a[10][10];coutfonction(a);a
ajout d'un caractere dans un tableau [ par kalf2000 ]
salut,g un petit blèm:g un tableau de caractère où g mis un chiffre, aprés avoir utilisé la fct itoa. et il fo que j'insere un autre chiffre avant cel
Problem Affichage de mon Tableau [ par Orezza ]
salut à tous, j'ai un blem à l'affichage du tableau. l'utilisateur parametre son tableau, c lui qui l'initilize mais j'arrive pas à afficher apres le
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
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
Occurence Tableau [ par BimboKlak ]
Comment faire pour trouver l'occurence d'un nombre dans un tableau à 1 dimension en C?ex:tab[4] = {3, 2, 3, 2}for (i=0;i cout Et ensuite trouver comb
Tableau suite... [ par Niníel ]
Alors voila ma 2ème question de la journée :-PJ'ai un tableau de caractères 64 position: char Tab[64], un compteur: int inCompter et un tableau de 1 p
tableau unidimensionnel .... [ par slowlover ]
j'ai fais un tableau unidimensionnel dont voici l'algorithme:#includeint main(){//declarationsfloat tab[10];int i;for(i=0;i{printf("entrez la valeur %
Tableau d'int à partir d'une CString [ par julien20vt ]
Bonjour,J'utilise les MFC, et j'aimerais pouvoir remplir un tableau d'int à partir d'une variable de type CString formatée de la manière suivante :CSt
tableau [ par anek971 ]
lut tous le monde;Je suis nouvo ds la programmation dc ma question paraitra certainement bete, mais comment fait on qd on as declaré un tableau et k'o
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
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
|