Pointer Manipulation in C -


hey ! beginner programmer , need pointers. trying do: have 2 pointer arguments function(caller), arg1 , arg2. want manipulate these pointers inside other function, func, such change reflects in caller func called. right change make in function gets undone in calling function. here source code:

func(node* arg1, node* argv2) {   node* point3 = (struct node*) malloc(struct node);   arg2 = arg1;   arg 1  = point3; }  caller(node* argv1, node* argv2) {   func(arg1, arg2); } 

now know can done using pass reference technique. func becomes func(node** arg, node** arg2) , dont want double pointers. thinking more on lines of how array when manipulated or changed in function changes functions in program. please me out !

there 2 ways it:
1) swap pointers, need use double pointers(**)

 func(node** arg1, node** arg2) {   node* tmp = *arg2;   *arg2 = *arg1;   *arg1  = tmp; } 

2) swap content, think can this:

 func(node* arg1, node* arg2) {   node* tmp = (struct node*) malloc(sizeof(struct node));   node* clean = tmp;    *tmp = *arg2;   *arg2 = *arg1;   *arg1  = *tmp;   free(clean); }  

method #1 more efficient since swap pointers instead of whole struct. , mentioned, should use sizeof() inside malloc.


Comments

Popular posts from this blog

asp.net - repeatedly call AddImageUrl(url) to assemble pdf document -

java - Android recognize cell phone with keyboard or not? -

iphone - How would you achieve a LED Scrolling effect? -