Fonction qui utilise un int* externe pour créer un tableau

Résolu
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 - 13 févr. 2008 à 01:04
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 - 13 févr. 2008 à 01:47
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

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

C++ (@++)<!--
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 01:11
int *ptab;
Init(&ptab);

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

   }

C++ (@++)<!--
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
13 févr. 2008 à 01:25
ç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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 01:27
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++ (@++)<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
13 févr. 2008 à 01:30
Pour la désalocation j'ai vérifié apparement pas de problème
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
13 févr. 2008 à 01:31
Oué ça pourrai marcher, mais ça fait un peu tordu,non?
Merci pour ton aide!
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 01:36
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++ (@++)<!--
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
13 févr. 2008 à 01:47
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.
0