- ベストアンサー
CでいうポインタみたいなことをJAVAでも・・・
Cでいうポインタを使ったプログラム #include <stdio.h> void nibai (int *a , int *b) { *a *= 2; *b *= 2; } int main(void) { int a=3 , b=5; nibai(&a,&b); printf("a=%d b=%d\n",a,b); return 0; } nibai関数はint型のアドレスを貰ってそのアドレスが指す値を書き換えているためmain関数に戻った際に値が変化している。 このようなことをJAVAでやりたいんですけど方法が見当たりません。 グローバルで共有するしか方法はないのでしょうか? CかつJAVAを知っている方限定の質問になってしまいますが よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> CかつJAVAを知っている方限定の質問になってしまいますが Javaの生い立ちとしては、C -> C++ -> Java となります。 Javaの変数は、C++で言うところの「スマートポインタ」に相当します。 質問者様は、推測するに複数の戻り値を得たい、ということではないでしょうか。 Javaはオブジェクト指向(及びデザインパターン)を強制するかのごとき 言語仕様になっていますので、単純で小さいプログラムを組むときに 多少わずらわしいこともありますが、戻り値をクラス化する、もしくは Vectorに突っ込むなどして、やり取りするクラス同士でルールを決めて やる必要があるのが一般的です。
その他の回答 (4)
- koko_u_
- ベストアンサー率18% (459/2509)
>このようなことをJAVAでやりたいんですけど方法が見当たりません。 そのようなメソッドを実装する必要はありません。 2 倍の計算がしたいなら、戻り値として 2 倍の数値を戻せばよいし、 a, b のペアに意味があるなら、それでクラスを作成するべきだ。 ということでよろしいか?
- alphion
- ベストアンサー率19% (27/136)
No.2 間違えました >int a[1],b[1]; int a[]=new int[1]; int b[]=new int[1];
- alphion
- ベストアンサー率19% (27/136)
クラスを作りたくないなら、配列で扱えば良いのではないでしょうか? int a[1],b[1]; とかして、 void nibai (int a[] , int b[]) と受けて…
JAVAはポインタのない(エラーを起こしにくくしている)言語なので無理です。