- 締切済み
ポインタに変わる方法
ポインタに変わる方法はありませんでしょうか? もし、あなたが新しいプログラミングを開発するとして、 ポインタの機能を使用せず、例えばAとBを交換するには どのような方法を考えますか? その際、メモリは最小限(ポインタと同等のメモリ使用量)に なるような方法を考えています。 以上、回答いただけると幸いです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- salsberry
- ベストアンサー率69% (495/711)
2つの変数A, Bの値を交換する手続き(関数)を書くのに、ポインタを使わずに書きたいという話でしょうか? 引数を参照渡しできる言語(PascalとかC++とか)ならばごく当たり前にそのような書き方ができます。 そういう話でないのであれば、何を期待しているのかもっと補足してください。
- zwi
- ベストアンサー率56% (730/1282)
新しいプログラミング言語の事だと勝手に解釈。 機械語でやるので中身はどうにでもなるってことで。 c言語風に書くと、こんな感じ。 int A,B; swap(A,B); 交換処理にはレジスタを使うので、AとBの変数メモリがあればよい。
- Tacosan
- ベストアンサー率23% (3656/15482)
なんとなく質問したいことは理解できるんだけど, 1点だけ確認させてください. 「新しいプログラミングを開発する」とはどのような意味なんでしょうか? ここでは「プログラミング」を名詞として使っているので常識的には「プログラミング」=「プログラムを作ること」なんですが, この意味を入れると「新しい『プログラムを作ること』を開発する」となって意味がとれません. たぶん「新しいプログラミング○○を開発する」と何か「○○」に入る語句があるのだと思いますが, 変に省略しないでちゃんと明記するようお願いします.
- buriburi3
- ベストアンサー率44% (353/792)
質問が抽象的過ぎて条件が分かりません。 CなのかC++なのかも不明。 int A,B,C ; ~~ C=A;A=B;B=C; ポインタが何処に関わってくるのか意味不明。 ポインタを使わない理由とか、もっと詳しい条件を提示しないと要求事項自体が理解できません。 32Bit/64Bit共通ソースとか? C++ならrefer/modifyメソッドを作るとか代入を再定義するとか。 Cでやるなら素直にswap作って#ifdefで切り分けるなりした方が安全そう。