Cで関数内の参照ではなく値で渡される変数を変更する方法は?Cで関数内の参照ではなく値で渡される変数を変更するにはどうすればよいですか?
void fun_a(int a, int b) {
....
}
int main() {
int x = 5, y = 6;
printf("%d, %d", x, y); // 5, 6
fun_a(x, y); // pass by value
printf("%d, %d", x, y); // 1, 2
return 0;
}
変数を変更するにはfun_a
をどうやって使うのですか?
これを行う方法はありますか?私はそれが参照を簡単に渡すことによって変数を変更することができます知っているけれども。
あなたはコピーを取得することはできません。コピーは元に戻されません。 – Jester
通常のCでそれを行うためのきれいな方法はありません、それは "値渡し"が意味するところは、あなたがそれに影響を与えることができないということです。後でコンパイラから生成されたマシンコードにパッチを当てて実行することもできますが、これは一般的な解決策ではなく、単なるコンパイルによるものです。 (コンパイル時に最適化されたコンパイラの大半は、第2の 'printf'を' puts( "5,6");としてコンパイルするので、コンパイル時に 'x、y'の値が分かるので実行時リソースを節約します。場合は、 "1,2"を出力する別の文字列を含むマシンコードにパッチを適用する必要があります) – Ped7g
あなたの質問は、ペンで書き込む方法があるかどうかを尋ねるようなものです。 – fuz