Pointeur et Tableaux
Fermé
omidaoui
Messages postés
32
Date d'inscription
dimanche 11 novembre 2012
Statut
Membre
Dernière intervention
2 décembre 2017
-
1 déc. 2017 à 17:17
omidaoui Messages postés 32 Date d'inscription dimanche 11 novembre 2012 Statut Membre Dernière intervention 2 décembre 2017 - 2 déc. 2017 à 16:23
omidaoui Messages postés 32 Date d'inscription dimanche 11 novembre 2012 Statut Membre Dernière intervention 2 décembre 2017 - 2 déc. 2017 à 16:23
A voir également:
- Pointeur et Tableaux
- Tableaux croisés dynamiques - Guide
- Fusionner deux tableaux excel - Guide
- Pointeur souris disparu windows 10 - Guide
- Pointeur souris - Guide
- Barbara veut calculer automatiquement son budget dans un tableau. citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). - Forum Musique / Radio / Clip
2 réponses
Utilisateur anonyme
1 déc. 2017 à 21:20
1 déc. 2017 à 21:20
Bonjour
Ta fonction create_tab2 remplit une table qui n'est pas celle que tu lui as passée en paramètre.
En effet, dans le programme principal, tu alloues une zone pour une table, et tu passes le pointeur à la fonction create_tab2.
Cette fonction reçoit une copie du pointeur. Je dis bien une copie du pointeur, pas le pointeur lui-même. Dans la fonction, tu alloues un nouveau tableau dont tu mets l'adresse dans cette copie du pointeur. Tu perds ainsi la trace du l'endroit où T pointait dans le programme principal. Ce qui se passe ensuite dans create_tab2 n'a plus aucun rapport avec la zone pointée par T.
Ta fonction create_tab2 remplit une table qui n'est pas celle que tu lui as passée en paramètre.
En effet, dans le programme principal, tu alloues une zone pour une table, et tu passes le pointeur à la fonction create_tab2.
Cette fonction reçoit une copie du pointeur. Je dis bien une copie du pointeur, pas le pointeur lui-même. Dans la fonction, tu alloues un nouveau tableau dont tu mets l'adresse dans cette copie du pointeur. Tu perds ainsi la trace du l'endroit où T pointait dans le programme principal. Ce qui se passe ensuite dans create_tab2 n'a plus aucun rapport avec la zone pointée par T.
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
2 déc. 2017 à 10:20
2 déc. 2017 à 10:20
Bonjour,
Attention, l'exemple avec
L'exemple avec
Attention, l'exemple avec
create_tab1()fait 2 allocations! Et aucune libération.
L'exemple avec
create_tab2(). Une fonction ne peut modifier une variable de l'appelant que si elle est passée par adresse. Ici la variable est un pointeur, son adresse est donc un pointeur de pointeur.
void create_tab2( int** adr_t , int n ) { *adr_t = malloc( n * sizeof(int) ); int* t = *adr_t; .....
omidaoui
Messages postés
32
Date d'inscription
dimanche 11 novembre 2012
Statut
Membre
Dernière intervention
2 décembre 2017
2 déc. 2017 à 16:23
2 déc. 2017 à 16:23
:) merci beaucoup
2 déc. 2017 à 16:22