Pointers

hhhp2004 Messages postés 173 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 13 octobre 2007 - 13 oct. 2007 à 05:33
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 - 13 oct. 2007 à 20:36
Salut,

Je debute en C++ et j'ai qulques questions sur les pointers:

1. Comment on peut savoir l'adresse dans la memoire d'un element d'un tableau de type char?
    Par example: 

 #include
using namespace std;


int main()
{
 char tabStr[] = "Salut!";
 char *myPtr;


 myPtr = &tabStr[1];


 cout << myPtr << "\n";


 return 0;
}
le code ci-haut ecrit sur l'ecran 'alut!' au lieu d'une adresse.

2. Quand une fonction retourne un pointer vers un tableau defini dans cette fonction ... qu'est-ce qui se passe avec ce tableau quand la fonction est quittee?
Par example:

#include
using namespace std;


int *getValues();


int *getValues()
{
 cout << "Veuillez entrer 2 nombres: ";
 int tabValues[2];


 cin >> tabValues[0] >> tabValues[1];


 return tabValues;
}


int main()
{
 int *myPtr;


 myPtr=getValues();


 cout << myPtr[1] << "\n";


 return 0;
}
 
L'example marche dans le sens que cout << myPtr[1] << "\n"; va ecrire sur l'ecran le deuxieme nombre que vous avez tappe ... mais j'ai toujours de doutes parce que on nous a dit que les variables definies dans une fonction se detruisent lors de la sortie de cette fonction.

Merci

2 réponses

gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
13 oct. 2007 à 05:37
1 cout << &var
2 - il sera detruit car ton pointeur est creer a l'interieur
utilise fonction(int *pTab)
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
13 oct. 2007 à 20:36
Pour ta question 2:
en fait ca marche parce que ton tableau interne à la fonction est déclaré sur la pile; comme le code ne fait quasiment rien après la mémoire n'a pas encore été réécrite avec d'autres données-> tu retrouves tes données.
Cependant c'est un hasard et il ne faut jamais compter dessus lorsque tu prog : des données déclarées statiquement dans une fonction ne doivent pas être utilisées quand la fonction a retourné.
0
Rejoignez-nous