JavaとC++のパラメータ転送
1289 ワード
問題の起源
今日、ブロガーはJavaでアルゴリズムを実装する際に、Java:
しかし、冷静になったブロガーは、眉をひそめると簡単ではないことに気づいた.私はなぜこのようなZZのコードを書いたのか考え始めたが、以前c++で似たようなコードc++を書いたことがあると思った.
まとめ JavaとC++の"="の違い を得る両言語ともパラメータは を付与する. C++で参照されている場合、参照変数にメモリがないと理解できる同じオブジェクトの異なる名前を表す実パラメータの別名 また、pythonにもJavaに似たルールがあることに気づきました.私は断言できません.お知らせください.ブロガーも初心者なので、ブログを書くのは勉強中に出会った問題や経験をまとめるためです.もし間違いがあったら、指摘してください.私と同じ考えを持っていて、あなたを助けることができたらいいです.
今日、ブロガーはJavaでアルゴリズムを実装する際に、Java:
private static void exchange(int x, int y){
int temp = x;
x = y;
y = temp;
}
exchange(a, b)
を呼び出して変数aを交換しようとしたが、bの値が実行された後、a,bの値が交換されていないことに気づいて、上のコードを見て、心の中でMDZZを黙念した!!関数のパラメータは値の伝達で、形式のパラメータx、yは関数の局部の変数で、実際のパラメータa、bのコピーで、xを交換して、y.はa、bの値を変えません!!!しかし、冷静になったブロガーは、眉をひそめると簡単ではないことに気づいた.私はなぜこのようなZZのコードを書いたのか考え始めたが、以前c++で似たようなコードc++を書いたことがあると思った.
void exchange(int &x, int &y) {
int temp = x;
x = y;
y = temp;
}
exchange(a, b);
を运行してaを発见して、bの値は确かに元はJavaの変数を思って引用変数を叫んで、c++の中の引用と差が少ないべきで、c++が引用パラメータでできる以上、Javaは直接変数でパラメータをしてもいいです.良い解釈が見つかったのでまとめてみます.まとめ
lh = rh
を例に挙げると、Javaでは変数が基本タイプ(byte,short,int,long,float,double,boolean,char)である場合、lhはrh自体の値を取得し、非基本タイプである場合、lhはrhが参照するオブジェクトのアドレス、すなわちlh,rhが同じオブジェクトを指す(lh,呼び出しオブジェクトの方法によってオブジェクトを変更することができる).C++中:lhはrh自身の値 =
形式(C++では参照時を除く)で伝達され、パラメータもメモリを占有することに注意されているため、どの値伝達を忘れ、参照伝達は「=」で