C++ pointers πρόβλημα με new
Posted: Tue Nov 21, 2006 9:57 pm
Έχω το εξής πρόβλημα. Όταν περνάω τον δείκτη ενός string σε μία μέθοδο (έχοντας κάνει new) μου αλλάζει την διεύθυνση, κάτι που δεν εξηγείται...
Τι δεν έχω καταλάβει? Το output από τον πρώτο κώδικα το καταλαβαίνω, αλλά το δεύτερο θέλω παρακαλώ κάποιος να μου το εξηγήσει-γιατί κάνοντας απλή εκτύπωση της διεύθυνσης που δείχνει o pointer, έπρεπε να βγάζει την ίδια δεύθυνση με αυτό που έδειχνε ο δείκτης που πέρασε σαν attribute...


Code: Select all
#include <iostream>
#include <vector>
using namespace std;
void address(string* s) {
cout<<"entered "<<s<<endl;
}
int main() {
string a="text";
cout<<"before entering method "<<&a<<endl;
address(&a);
cout<<"after entering method "<<&a<<endl;
system("pause");
}
Output:
before entering method 0x22ff50
entered 0x22ff50
after entering method 0x22ff50
Press any key to continue . . .
Code: Select all
#include <iostream>
#include <vector>
using namespace std;
void address(string* s) {
cout<<"entered "<<s<<endl;
}
int main() {
string* a=new string("text");
cout<<"before entering method "<<&a<<endl;
address(a);
cout<<"after entering method "<<&a<<endl;
system("pause");
}
Output:
before entering method 0x22ff5c
entered 0x3d3b88
after entering method 0x22ff5c
Press any key to continue . . .