hhhp2004
Messages postés173Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention13 octobre 2007
-
13 oct. 2007 à 05:33
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDerniè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.
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 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é.