問題タブ [pass-by-pointer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
734 参照

arrays - Common Lisp で (値ではなく) 参照によって部分配列を渡す

*my-array*次のような配列があるとします。これを呼び出します。

サブアレイに関数 f を適用したい

書いていただけると幸いです

wheresubarrayは引数として取ります:

  • 元の配列
  • 1次元に始点と終点を持つ2要素リスト
  • 2 番目の次元に開始点と終了点がある別の 2 要素リスト

valueではなく、f 参照によって(またはポインターによって)サブ配列を引数として関数に渡す方法を探しています。

(これに対処する愚かな方法は、(この特定のケースでは) 2*2 配列を作成し、元の配列から値をコピーする i と j をループ処理する関数を作成することです。しかし、比較的大きな配列を扱っている場合、これはかなりの費用がかかります。)

パッケージが存在することがわかりましたが、cl-slice値をコピーするのか、参照によってデータにアクセスするのかわかりません。

0 投票する
5 に答える
1947 参照

c++ - C++ でポインターを使用するのは常に悪いことですか?

C++ ではポインターを使用しないように言われました。しかし、私が書こうとしているコードでは、それらを避けることはできないようです。あるいは、他の優れた C++ 機能を見逃している可能性があります。

別のクラス (class2) をデータ メンバーとして含むクラス (class1) を作成したいと考えています。次に、class2 に class1 を認識させ、それと通信できるようにします。

class2 のメンバーとして class1 への参照を持つことができますが、それは、class2 のコンストラクターでパラメーターとして class1 への参照を提供し、不要な初期化リストを使用する必要があることを意味します。コンストラクターを使用せずにこれを実行しようとしています。

class2 には、class1 への参照を取り込める Initialise というメンバー関数が必要ですが、これはポインターを使用しないと不可能のようです。人々はここで何をお勧めしますか? 前もって感謝します。

コードは、主なアイデアを理解するために完全に単純化されています。

0 投票する
1 に答える
89 参照

ios - Inout パラメータに同じアドレスがありません

私は 3 つのクラス A、B、C を持っています。A には rA というリソースがあります。私が達成しようとしているのは、これらすべてのインスタンスがまったく同じリソースへの参照を持っていることです。

Swift 用語で具体的に説明すると、次のようになります。

クラス A には foo というプロパティがあります。

クラス B には、 inout パラメータとしてイニシャライザに渡される foo というプロパティがあります。

クラス C はクラス B に類似しています

fooクラス A からクラス B (または C)にパスすると、アドレスが変わるのはなぜですか?

AI では、次のように B (または C) に渡します。

Aでの初期化後にアドレスを出力するfooと、Bでの割り当て後とは異なるアドレスが得られます。

これが事実である理由はありますか?

0 投票する
2 に答える
249 参照

c - この場合、ポインターをポインターに渡す必要があるのはなぜですか

この質問は、私からの以前の質問に基づいています。

そこに私はこの構造を持っていました。SDL2 を使用します。

これはうまくいきませんでした。答えは、*&window代わりに関数パラメーターとして使用したことを示唆しており、うまく機能しました。*&windowto**windowを次のように書き直しました。

そして、それも機能します。しかし、最初のバージョンが機能しない理由はまだわかりません。SDL_Windowの実装の詳細を調べたところ、通常typedefの名前空間に配置するのは構造体の通常の方法です。SDL_CreateWindowは を返しますSDL_Surface *.

私のジレンマを想像するために、次の簡単なプログラムを書きました。

これは53、ポインタからポインタへのセマンティクスを使用しなくても、期待どおりに出力されます。私の実装と SDL2 の実装の違いは何ですか。これは SDL2 の質問ではありません。以前の質問に答えた人は、SDL2 の知識がなくてもこれに答えることができたので、見逃した実装の詳細があるようです。誰かが私を啓発できることを願っています。

0 投票する
1 に答える
143 参照

c++ - この例での passByRefrence と passByAddress の使用の違いは何ですか。C++

以下に示す例でわかるように、参照渡しとアドレス渡しの両方を使用しています...

したがって、ここでは、passbyaddressとpassbyreferenceの使用の違いを本当に理解していません..これらの両方と値による受け渡しの違いは理解していますが(値による受け渡しはメモリアドレスではなく変数のコピーを渡すため)、わかりませんこの両者の違いは何ですか。多くの人は、「参照渡しを使用する方がはるかに優れている」または「アドレス渡しを使用する必要がある場合を除いて、常に参照渡しを使用する」と言っています..しかし、どちらを使用するかを決定できるように、実際の違いを知りたい後のプロジェクトで使用します。

ありがとうございました。

0 投票する
2 に答える
2831 参照

c - double ポインターへのポインターで scanf() を使用する

これを機能させるために、知っているすべての組み合わせを試したような気がしますが、理解できません。関数へのポインターとして渡されるscanf()にはどうすればよいですか? int**検索してみましたが見つかりませんでした、もし重複していたら削除しますのでお知らせください。実行を開始し、いくつかの値を入力するとセグメンテーション違反になります。

これが私のコードです。関数のscanf()行がめちゃくちゃになっていると思いsetMatrix()ます:

0 投票する
1 に答える
55 参照

c++ - メソッドを終了しても静的ベクターのデータが変更されない

これは、C++ を学習しているときに念頭に置いていた Bank プロジェクトであり、継承とポインターを学習したときに追加していました。ユーザーは銀行の出納係で、新しい顧客を作成したり、既存の顧客の取引を処理したりできます。

Customerは、 から継承するプライベート フィールドとしてSavingsおよびクラスを持っています。このクラスは、プライベートフィールドから顧客を追加/取得します。CheckingAccountBankstatic vector<Customer>

予期しない結果は、「process_transaction」メソッドで、ベクターから顧客をフェッチし、そのアカウントから入金/引き出しできることですが、メソッドを離れて戻ってくると、アカウント データは初期化時から変更されていません。 .

助けが必要。お客様の問題への言及ですか?いつ参照またはポインタで戻る必要がありますか?

これがコードです。ドライバークラスには、顧客を作成するメソッドがあります

ドライバー クラスには、顧客を処理するための別のメソッドがあります。この方法を終了すると、顧客のアカウントは変更されませんが、別の方法で機能します。

銀行クラス。

Bank.h

0 投票する
1 に答える
2882 参照

ruby - Rubyで参照渡しするには?

現在Watcher、Ruby でクラスを開発しています。これは、とりわけ、トグル信号の期間を見つけることができます。これは一般的にかなり単純ですが、私が直面している問題は、明らかに Ruby がすべてのパラメーターを値で渡すことです。オンラインで調査しているときに、「値渡し」と「参照渡し」が実際に何であるかについて多くの異なる議論を見つけましたが、実際の「方法」はありません。C/C++ のバックグラウンドを持つ私にとって、これはプログラミング/スクリプト言語の不可欠な部分です。

私が書いたクラスの関連部分を以下に示します。メソッド Watcher::watchTogling() は、私が問題を抱えているものです。パラメータとして、aVariable期間を測定している値への参照にする必要があります。

Rubyで参照渡しする方法はありますか? そうでない場合、この問題を解決する代替手段はありますか?