ali wrote:
When I pass a pointer as an argument of a method, is it safe if I
change the data pointed by the argument and return it upon
completion ?
Sure. You're receiving a value, you're using the value [to change
the data], you're returning the [same, supposedly] value. What's
the problem?
For example:
Object* someFunction(Object* ob)
{
//do some manipulation and return
return ob;
}
Are there things I need to be aware/cautious when doing this?
The pointer passed in could be NULL. Make sure you check before you
try to manipulate the data pointed to by the pointer.
I tried
with int pointer and got the results as expected (no error or garbage
output). I had thought it would give me garbage result because to my
undestanding, ob would be a local variable to someFunction, and should
have been destroyed upon return?
The variable will be destroyed, but the value you're returning isn't.
What happens if you do
int foo(int a)
{
int b = a + 42;
// do something to b
return a;
}
Nothing special, right. You get the value, you use the value, and then
you return the value. 'a' variable does get destroyed, but not before
the temporary of type 'int' is created and returned.
I know that if within the body of the function above, I created a
pointer and assigned memory with new operator, I should not return the
pointer because it will be destroyed upon exit and I might be getting
garbage.
Sounds wrong.
I know i'm missing some simple concept. Will appreciate your help.
It's hard to explain if you can't grasp the [simple] concept of
passing around values. If you can separate two concepts in your
mind: of variables and values. Variables do have values, but you
don't need a variable to have a value you can pass around. That's
what an 'r-value' is.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask