c - Allocating a pointer by passing it through two functions -
What am I doing wrong here? Am I assigning memory to the original charPtr or something else? Why can I read the value of func2 inside charPtr , but main ( charPtr is NULL in the main)?
#include & lt; Stdlib.h & gt; # Include & lt; Stdio.h & gt; Zero func2 (char * charPtr) {charPtr = (four *) molk (size (four)); * CharPtr = 'c'; Printf ("func2:% c \ n", * charPtr); } Zero func1 (four ** charDoublePointer) {// * charDoublePointer = (four *) malloc (sizeof (char)); Func2 (* charDoublePointer); } Int main (int argsc, char * argv []) {char * charPtr = NULL; Func1 (& amp; charPtr); Printf ("% c \ n", * charPtr); }
You are losing a level indirection func2 Take the TI to four ** like func1 . When you type:
void func2 (char * charPtr) {charPtr = (four *) malloc (sizeof (char)); * CharPtr = 'c'; Printf ("func2:% c \ n", * charPtr); } You are just assigning local variable charPtr , which has no effect on external program. Instead, type:
void func2 (char ** charPtr) {* charPtr = malloc (sizeoff (four)); // malloc ** charPtr = 'c'; Printf ("func2:% c \ n", ** charPtr); } Change the name to charDoublePtr if you insist.
and call it at func1 : like:
func2 (charPtr);
Comments
Post a Comment