c - Pass by value-doesn't execute as I want it -
this question has answer here:
i not understand concept of pass value in c. here function:
void add(int x){ x = x+1; }
and when call function:
int y=3; add(y);
but when compile, still 3. i've been told has pass-by-value still not understand? can explain why?
pass value creates copy of argument. copy changed in function
void add(int x){ x = x+1; }
thus change make made copy , not variable in main
scope (that expecting see changed).
if want change variable within function passing parameter cannot pass value. change function pass pointer this
void add(int* x){ *x = *x + 1; }
and pass address of integer function this
int y=3; add(&y);
within main()
the pointer still passed value copy of pointer being acted on, doesn't matter not changing pointer itself, changing value of variable points to.
Comments
Post a Comment