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