0

Hi,

Please see the code below.

void Allocate( char* s )
{
s = (char*)malloc( 100 );
}

int main( )
{
char* s = NULL;
Allocate( s );
strcpy( s,"Test");/*I know that this will fail. b'coz I still have a NULL pointer in s. Initially s was pointing to NULL, and from the function Allocate 100 bytes of memory was allocated in some memory location, and address of s was made to point to that location. But inside the main, s is still pointing to NULL. Pl. correct me if I am wrong.*/

}

Now my question is

void Allocate( Base* s )
{
s = new Base;
}

int main( )
{
Base* obj = NULL;
Allocate( obj );
obj->some_member = 20; // this works...

}

<< moderator edit: added [code][/code] tags >>

So I assume, object pointers are passed to functions in a different way compared to primitive type pointers. Can anyone pl. comment on this.

3
Contributors
2
Replies
3
Views
11 Years
Discussion Span
Last Post by winbatch
0

All passing is by value unless otherwise specified. As you want the changes reflected back to the calling function you will need to pass either a reference to a pointer a char*& or a pointer to a pointer a char** or alternatively return a pointer by value rather than void.
object pointers and primitive type pointers behave exactly the same. Your code is wrong its that simple.

0

(In other words, don't be confused by the * in char *, treat char * like int and it will be clear...)

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.