Fonction qui utilise un int* externe pour créer un tableau [Résolu]

Signaler
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
-
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
-
Bonjour je voudrai savoir si il est possible qu'une fonction recoive un pointeur d'entier,créé un tableau dynamiquement puis l'initialise,afin de le récupérer dans la fonction appelante.

J'ai éssayé

int *ptab;
Init(ptab);

void Init(int *t)
  {
   t=new int[3] ;
   t[0]=12
.
.
.

   }

Mais ça ne marche pas ptab n'est pas n'existe pas après l'execution de la fonction.
Et il possile d'initialiser un tableau de cette façon???
Merci d'avance

8 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Oups j'ai posté trop vite.
Le mieux serais de retourner le pointeur.
Ou alors allouer en dehors de la fonction.

C++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
int *ptab;
Init(&ptab);

void Init(int **t)
  {
   t=new int[3] ;
   t[0]=12
.
.
.

   }

C++ (@++)<!--
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
ça a l'air de marcher merci, lol j'ai tourner tous ça dans tout les sens alors qu'il ne fallait pas se compliquer la vie, bon reste a voir si la désalocation du tableau se fera bien.
Merci
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
On peut aussi faire quelque chose comme:

void Init(int **t)
{
   *t = new int[3];
   t[0][0] = 12;
   t[0][1] = 14;
   t[0][2] = 16;
}

C++ (@++)<!--
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
Pour la désalocation j'ai vérifié apparement pas de problème
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
Oué ça pourrai marcher, mais ça fait un peu tordu,non?
Merci pour ton aide!
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Ben tu travails en C++ ?
On pourrait utiliser les références mais je sais pas si c'est une très bonne solution. Personnellement, je suis loin d'être un adepte de cette pratique.

void Init(int* &t)
{
   t = new int[3];
   t[0] = 12;
   t[1] = 14;
   t[2] = 16;
}

int *ptab;
Init(ptab);

C++ (@++)<!--
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
Oui je travail en c++.
Je ne fait pas comme ça d'habitde.
J'appel une fonction pour connaitre le nombre d'élément, je créeé mon tableau, puis je l'envoie.