関数に引数で変数を渡したときに、

関数の中で引数で受け取った変数を書き換えたらどうなるんでしょうか?


-----


void func( int value ){

value++;

printf( "value : %d\n", value );

}


int main(){

int data = 0;

func( data );

printf( "data : %d\n", data );

return 0;

}

-----


この場合、どのように表示されると思いますか?

正解はこうです。

-----

value : 1

data : 0

-----


つまり、関数内で変数の内容を書き換えても、

呼び出し元の変数の内容は変化しないのです。


コレはどういう事かと言うと、『引数で変数が渡される場合そのコピーが渡される』ということです。


つまり、 data は func() に渡すときに コピーである value が作られて、

その変数が func() に渡っているのです。