Accueil > Forum > > > > New pour argument formel
New pour argument formel
lundi 16 octobre 2006 à 13:12:28 |
New pour argument formel

goutbouyo
|
Salut, J'ai une petite question concernant les pointeurs : J'ai une fonction qui alloue de la mémoire à un pointeur passé en paramètre : void CreeTableau(int *tab) { tab = new int[10]; tab[0]=5; } Et ma fonction main() : int main() { int *myTab=0; CreeTableau(myTab); cout << "mytab : " << myTab[0]; return 0; } Pouvez vous me dire pourquoi la mémoire est allouée pour la varianle locale tab mais pas pour la variable passée en paramètre myTab ???
Merci d'avance !!!
|
|
lundi 16 octobre 2006 à 13:43:05 |
Re : New pour argument formel

mad_love_disease
|
Réponse acceptée !
Yo goutbouyo,
C'est tout simplement parceque le paramètre int *tab est passé "par copie" dans ta fonction CreeTableau. Ton tableau est bien alloué, mais tu ne récupere pas son adresse. Essaye plutot:
int * CreeTableau() { int * tab = new int[10]; tab[0]=5; return tab; } Et ma fonction main() : int main() { int *myTab=0; myTab = CreeTableau(myTab); cout << "mytab : " << myTab[0]; return 0; }
Mad_Love_Disease
|
|
lundi 16 octobre 2006 à 14:21:10 |
Re : New pour argument formel

buno
|
En règle générale, il vaut mieux éviter de passer un pointeur vers une fonction qui s'occupe de l'allocation. Si on ne peut pas faire autrement, ne pas oublier la fonction de désallocation!!! NB: dans le copier-coller de Mad_love_disease, il y a une erreur: pas d'argument à la fonction CreeTableau() Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai... Le site de mon mariage
|
|
lundi 16 octobre 2006 à 15:05:03 |
Re : New pour argument formel
|
lundi 16 octobre 2006 à 17:46:54 |
Re : New pour argument formel

goutbouyo
|
Ok merci j'ai compris maintenant. Et si j'utilise le passage par réference en remplaçant : void CreeTableau(int *tab) { tab = new int[10]; tab[0]=5; } par void CreeTableau(int &*tab) { tab = new int[10]; tab[0]=5; }
Ca marche là non???
|
|
lundi 16 octobre 2006 à 20:24:07 |
Re : New pour argument formel

luhtor
|
Oui ca marche.
Ya aussi cette variante pour le C:
void CreeTableau(int **tab)
{
*tab = new int[10];
(*tab)[0]=5;
}
|
|
lundi 16 octobre 2006 à 20:25:42 |
Re : New pour argument formel

luhtor
|
Oups pardon, j'ai dis ca marche alors que non ca marche pas.
void CreeTableau(int &*tab) <= incorrect, et ca n'a aucun sens. un pointeur sur une référence ? ?
par contre, ca ca marche:
void CreeTableau(int * & tab)
|
|
lundi 16 octobre 2006 à 20:36:32 |
Re : New pour argument formel

goutbouyo
|
void CreeTableau(int &*tab) <= incorrect, et ca n'a aucun sens. un pointeur sur une référence ? ? Ca serait pas plutôt une référence sur un pointeur ça ???
Donc en clair, avec une référence, je fait ça: void CreeTableau(int &*tab) ou : void CreeTableau(int *&tab)
|
|
lundi 16 octobre 2006 à 20:40:43 |
Re : New pour argument formel

goutbouyo
|
En fait le but est d'allouer dynamiquement un tableau à 2 dimensions dans une fonction. Comment faire donc avec le tableau passé en argument ???
|
|
lundi 16 octobre 2006 à 21:04:04 |
Re : New pour argument formel

luhtor
|
Réponse acceptée !
Bien sur que non:
void CreeTableau(int &*tab) c'est un pointeur sur une référence.
void CreeTableau((int *) & tab) <= ca, c'est la forme correct
typedef int* pint;
void CreeTableau(pint & tab) <= ca choque peut etre moins comme ca.
(int*) c'est un type a part entière. Donc tu envois une référence comme pour n'importe quel type
void function(TYPE & _reference);
que TYPE = int * ou TYPE = int, ca change rien.
|
|
Cette discussion est classée dans : int, tab, argument, formel, mytab
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
Argument argv[] en (int) [ par thebigbang ]
Bonjour,Je cherche comment récupérer une variable entière à partir de la cette fonction main() :int main(int argc, char * argv[] ){...return 0;}Je vou
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
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
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
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
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|