問題タブ [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.
arrays - Common Lisp で (値ではなく) 参照によって部分配列を渡す
*my-array*
次のような配列があるとします。これを呼び出します。
サブアレイに関数 f を適用したい
書いていただけると幸いです
wheresubarray
は引数として取ります:
- 元の配列
- 1次元に始点と終点を持つ2要素リスト
- 2 番目の次元に開始点と終了点がある別の 2 要素リスト
- 等
valueではなく、f
参照によって(またはポインターによって)サブ配列を引数として関数に渡す方法を探しています。
(これに対処する愚かな方法は、(この特定のケースでは) 2*2 配列を作成し、元の配列から値をコピーする i と j をループ処理する関数を作成することです。しかし、比較的大きな配列を扱っている場合、これはかなりの費用がかかります。)
パッケージが存在することがわかりましたが、cl-slice
値をコピーするのか、参照によってデータにアクセスするのかわかりません。
c++ - C++ でポインターを使用するのは常に悪いことですか?
C++ ではポインターを使用しないように言われました。しかし、私が書こうとしているコードでは、それらを避けることはできないようです。あるいは、他の優れた C++ 機能を見逃している可能性があります。
別のクラス (class2) をデータ メンバーとして含むクラス (class1) を作成したいと考えています。次に、class2 に class1 を認識させ、それと通信できるようにします。
class2 のメンバーとして class1 への参照を持つことができますが、それは、class2 のコンストラクターでパラメーターとして class1 への参照を提供し、不要な初期化リストを使用する必要があることを意味します。コンストラクターを使用せずにこれを実行しようとしています。
class2 には、class1 への参照を取り込める Initialise というメンバー関数が必要ですが、これはポインターを使用しないと不可能のようです。人々はここで何をお勧めしますか? 前もって感謝します。
コードは、主なアイデアを理解するために完全に単純化されています。
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での割り当て後とは異なるアドレスが得られます。
これが事実である理由はありますか?
c - この場合、ポインターをポインターに渡す必要があるのはなぜですか
この質問は、私からの以前の質問に基づいています。
そこに私はこの構造を持っていました。SDL2 を使用します。
これはうまくいきませんでした。答えは、*&window
代わりに関数パラメーターとして使用したことを示唆しており、うまく機能しました。*&window
to**window
を次のように書き直しました。
そして、それも機能します。しかし、最初のバージョンが機能しない理由はまだわかりません。SDL_Windowの実装の詳細を調べたところ、通常typedef
の名前空間に配置するのは構造体の通常の方法です。SDL_CreateWindowは を返しますSDL_Surface *
.
私のジレンマを想像するために、次の簡単なプログラムを書きました。
これは53
、ポインタからポインタへのセマンティクスを使用しなくても、期待どおりに出力されます。私の実装と SDL2 の実装の違いは何ですか。これは SDL2 の質問ではありません。以前の質問に答えた人は、SDL2 の知識がなくてもこれに答えることができたので、見逃した実装の詳細があるようです。誰かが私を啓発できることを願っています。
c++ - この例での passByRefrence と passByAddress の使用の違いは何ですか。C++
以下に示す例でわかるように、参照渡しとアドレス渡しの両方を使用しています...
したがって、ここでは、passbyaddressとpassbyreferenceの使用の違いを本当に理解していません..これらの両方と値による受け渡しの違いは理解していますが(値による受け渡しはメモリアドレスではなく変数のコピーを渡すため)、わかりませんこの両者の違いは何ですか。多くの人は、「参照渡しを使用する方がはるかに優れている」または「アドレス渡しを使用する必要がある場合を除いて、常に参照渡しを使用する」と言っています..しかし、どちらを使用するかを決定できるように、実際の違いを知りたい後のプロジェクトで使用します。
ありがとうございました。
c - double ポインターへのポインターで scanf() を使用する
これを機能させるために、知っているすべての組み合わせを試したような気がしますが、理解できません。関数へのポインターとして渡されるscanf()
にはどうすればよいですか? int**
検索してみましたが見つかりませんでした、もし重複していたら削除しますのでお知らせください。実行を開始し、いくつかの値を入力するとセグメンテーション違反になります。
これが私のコードです。関数のscanf()
行がめちゃくちゃになっていると思いsetMatrix()
ます:
c++ - メソッドを終了しても静的ベクターのデータが変更されない
これは、C++ を学習しているときに念頭に置いていた Bank プロジェクトであり、継承とポインターを学習したときに追加していました。ユーザーは銀行の出納係で、新しい顧客を作成したり、既存の顧客の取引を処理したりできます。
Customer
は、 から継承するプライベート フィールドとしてSavings
およびクラスを持っています。このクラスは、プライベートフィールドから顧客を追加/取得します。Checking
Account
Bank
static vector<Customer>
予期しない結果は、「process_transaction」メソッドで、ベクターから顧客をフェッチし、そのアカウントから入金/引き出しできることですが、メソッドを離れて戻ってくると、アカウント データは初期化時から変更されていません。 .
助けが必要。お客様の問題への言及ですか?いつ参照またはポインタで戻る必要がありますか?
これがコードです。ドライバークラスには、顧客を作成するメソッドがあります
ドライバー クラスには、顧客を処理するための別のメソッドがあります。この方法を終了すると、顧客のアカウントは変更されませんが、別の方法で機能します。
銀行クラス。
Bank.h
ruby - Rubyで参照渡しするには?
現在Watcher
、Ruby でクラスを開発しています。これは、とりわけ、トグル信号の期間を見つけることができます。これは一般的にかなり単純ですが、私が直面している問題は、明らかに Ruby がすべてのパラメーターを値で渡すことです。オンラインで調査しているときに、「値渡し」と「参照渡し」が実際に何であるかについて多くの異なる議論を見つけましたが、実際の「方法」はありません。C/C++ のバックグラウンドを持つ私にとって、これはプログラミング/スクリプト言語の不可欠な部分です。
私が書いたクラスの関連部分を以下に示します。メソッド Watcher::watchTogling() は、私が問題を抱えているものです。パラメータとして、aVariable
期間を測定している値への参照にする必要があります。
Rubyで参照渡しする方法はありますか? そうでない場合、この問題を解決する代替手段はありますか?