[c++]Besoins d'aide sur un pointer de pointer
Mr. Mime
-
loupius -
loupius -
Bonjour,
J'ai un petit problème lorsque je veux allouer de la mémoire dynamiquement.
Le pointeur de l'adresse du tableau à créer est dans mon main, et j'aimerais q'une fonction de type void
prenne se pointeur et alloue le tableau à l'intérieur.
Cependant, rien n'y fait, je crois que j'ai vraiment pas la bonne syntaxe...
Si j'ai poster avec comme titre pointeur de pointeur, c'est que j'ai bien l'impression que je vais devoir passer par là!
Le code est du style :
J'ai un petit problème lorsque je veux allouer de la mémoire dynamiquement.
Le pointeur de l'adresse du tableau à créer est dans mon main, et j'aimerais q'une fonction de type void
prenne se pointeur et alloue le tableau à l'intérieur.
Cependant, rien n'y fait, je crois que j'ai vraiment pas la bonne syntaxe...
Si j'ai poster avec comme titre pointeur de pointeur, c'est que j'ai bien l'impression que je vais devoir passer par là!
Le code est du style :
void allouer(int taille, int *pointeur)
{
*pointeur = new int[taille];
}
int main()
{
int* tableau = NULL;
allouer(25,tableau);
}
A voir également:
- [c++]Besoins d'aide sur un pointer de pointer
- Mettre des points sur une carte - Guide
- Point de suite word - Guide
- Point de restauration - Guide
- Comment inserer une video dans un power point - Guide
- Comment mettre un point gps sur maps - Guide
2 réponses
Oui, on peut utiliser un pointeur de pointeur, mais le plus simple:
int* allouer (int taille)
{
return (new int[taille]);
}
int main()
{
int* tableau = allouer (25);
...
delete tableau;
return 0;
}Toutefois il serait plus sain et plus simple d'écrire:int main()
{
int* tableau = new int[25];
...
delete tableau;
return 0;
}
void allouer(int taille, int *pointeur)
{
*pointeur = new int[taille];
}
deviens
void allouer(int **pointeur) // pour un pointer simple
{
*pointeur = new int; // donc pas de tableau
}
enfin la tu creer un tableau dont cela ne marchera pas, il te faudras une etoile en plus
void allouer(int taille, int ***pointeur)
{
*pointeur = new int[taille];
}
void allouer (int taille, int **pointeur) { *pointeur = new int[taille]; // L'idéal serait de faire un test sur 'taille' } int main (int argc, char **argv) { int* tableau; allouer (25, &tableau); // Il faudrait vérifier que tableau n'est pas NULL ... delete tableau; return 0; }