c++ - pointer to pointer assignment not working if used in a separate method -
c++ - pointer to pointer assignment not working if used in a separate method -
within main, if line commented out used instead of 1 above it, lose pointer , nil gets printed console. must missing fundamental property concerning pointers thought when pass pointers x , y foo(), assignment of them work same if same logic done locally in main. missing , create assignment work correctly within foo()?
#include <cstdio> #include <cstdlib> #include <iostream> #include <string> using std::cout; using std::endl; using std::string; const int maxsize = 3; struct item{ string key; string value; }; struct node{ int count; item *item[maxsize + 1]; node *branch[maxsize + 1]; }; void foo(item *x, item*y) { y = x; } int main(int argc, char *argv[]) { item *x = new item(); x->key = "hi"; x->value = "there"; item *y = new item(); y = x; //foo(x, y); node *p = new node(); p->item[1] = y; cout << p->item[1]->key << " " << p->item[1]->value << endl; homecoming 0; }
your main question like: "how can move code function , same behaviour?"
inside main have y=x. before describing how move logic function, should line unusual , doesn't want do.
but, i'll ignore , pretend y=x in main 'correct' , want move code function. right way in c++ move code functions, without changing behaviour, utilize references.
for example, if had
int main() { int = 3; int b= 0; b = a; } you same behaviour:
void foo(int &a, int &b) { b = a; } int main() { int = 3; int b= 0; foo(a,b); } it should noted names of variables meaningless. write foo follows , identical.
void foo(int &left, int &right) { right = left; } anyway, re-create , paste code function , create parameters references. in case, simply
void foo(item *(&x), item*(&y)) { y = x; // same y=x in main, because x , y references here } sometimes, language can confusing regarding placement of * , &, simplest way turn parameter x reference set ( ) around , set & within ( ). i.e. x becomes (&x).
c++ pointers
Comments
Post a Comment