問題タブ [pass-by-value]
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.
c - OSXでのmallocの問題
OS X 10.6で実行されているCコードをいくつか作成しましたが、これはたまたま遅いので、valgrindを使用してメモリリークなどをチェックしています。これを実行しているときに気付いたことが1つあります。
このように2D配列にメモリを割り当てると、次のようになります。
次に、行列のメモリアドレスが0x0であることを確認します。
しかし、私がそうするなら
これは正常に機能します。つまり、新しく作成されたメモリへのポインタが返されます。
メモリを解放するためのfree2D関数もある場合。正しく解放されていないようです。つまり、ポインタは、0x0(デフォルトの可能性があると思いました)ではなく、freeを呼び出す前と同じアドレスを指します。
私の質問は次のとおりです。malloc/freeがどのように機能するかを誤解していますか?そうでなければ、誰かが何が起こっているのかを提案できますか?
アレックス
php - PHP では、$foo = new Foo() の場合、技術的に言えば、$foo はオブジェクトですか、それとも $foo は参照ですか?
更新: で
それは言います:
よく言及される PHP5 OOP のキーポイントの 1 つは、「オブジェクトはデフォルトで参照によって渡される」ということです。これは完全に真実ではありません。
何故ですか?以下は、完全に正しいかどうかわからない理由です。
大まかに言えば、foo はオブジェクト、またはクラス Foo のインスタンスと言えると思います。
しかし、非常に技術的に言えば、foo は単なる参照であり、変数foo
が常にオブジェクトへの参照である Java や Ruby とまったく同じ方法であるというのは本当ですか。
そのため、PHP では、
「参照渡し」とは言いませんが、非常に技術的に言えば、参照である値を渡しています。つまり、「参照渡し」ではなく「参照渡し」です。
しかし、PHP で foo がオブジェクトであると言うなら、「参照渡し」は理にかなっていると思います。それで本当ですか?foo は、オブジェクトではなくオブジェクトへの参照であると言われているため、「値渡し」しているだけなのでしょうか?
java - Java 再帰: 参照渡し
これは Java プログラマーの間で激しく議論され、物議を醸すトピックであることは認識していますが、私の問題はやや独特だと思います。私のアルゴリズムは、参照渡しが必要です。仮想(x、y)座標を割り当てるために、一般的なツリー(つまり、n-children)の時計回り/反時計回りの事前注文トラバーサルを行っています。これは単純に、訪問したツリーのノードをカウント (およびタグ付け) することを意味します。
ここで、ツリーの構造を生成します。
ノードがトラバースされた順序と、それぞれのノードに割り当てられた座標を出力したときの出力を次に示します。
0 3 2 5 4 1
0 1 2 3 4 3
0 1 2 4 5 3
0 1 2 3 4 3
注: 最初の 2 行は、時計回りの事前順序走査と x 座標の割り当てです。次の 2 行は、反時計回りの事前順序走査と y 座標の割り当てです。
私の質問は、2 行目を読み取る方法です。
0 1 2 3 4 5
編集 1: これは、ノードにアクセスする順序と割り当てた座標を出力するために使用するコードです。
また、x、y座標をよりよく説明するための引用があります。頂点。頂点の y 座標。
T の頂点の反時計回りの事前順序付け (順序付けには 0 から n − 1 の番号が付けられます) を計算し、それらを頂点の x 座標として使用します。
T の頂点の時計回りの事前順序付け (順序付けには 0 から n − 1 の番号が付けられます) を計算し、それらを頂点の y 座標として使用します。
matlab - 関数内の配列を変更するには?
MATLAB は値渡し言語です。ピクセルの隣人を処理する再帰関数があります。関数が呼び出されるたびに画像 (私の場合は 2 つの画像) のコピーを作成するのは非常にコストがかかります。
グローバル変数を使用して問題を解決しました。再帰関数で配列を変更する他の方法はありますか?
java - Javaは値渡しと参照渡しの両方です
重複の可能性:
Java は参照渡しですか?
すぐに答えを教えてください お願いします!!!
c++ - コンストラクターに最適な形式ですか?値または参照を渡しますか?
コンストラクターに最適な形式を考えています。サンプルコードは次のとおりです。
私が理解していることから、これはコンパイラーがそれぞれの状況で実行できる最善の方法です。
(1a)yはx1.m_yにコピーされます(1コピー)
(1b)yはXのコンストラクターの引数にコピーされ、次にx1.m_yにコピーされます(2コピー)
(1c)yはx1.m_yに移動されます(1移動)
(2a)f()の結果がx2.m_yにコピーされます(1コピー)
(2b)f()はコンストラクターの引数に組み込まれ、x2.m_yにコピーされます(1コピー)
(2c)f()がスタック上に作成され、x2.m_yに移動されます(1移動)
ここでいくつかの質問:
どちらの場合も、const参照による受け渡しは悪くはなく、値による受け渡しよりも優れている場合があります。これは、 「スピードが欲しいですか?値渡し」に関する議論に反しているようです。。C ++(C ++ 0xではない)の場合、これらのコンストラクターのconst参照による受け渡しを使用する必要がありますか、それとも値による受け渡しを行う必要がありますか?また、C ++ 0xの場合、値渡しよりも右辺値参照を渡す必要がありますか?
(2)の場合、一時的なものがx.m_yに直接構築されているとよいでしょう。右辺値バージョンでさえ、オブジェクトが動的メモリを割り当てない限り、コピーと同じくらいの作業である移動が必要だと思います。コンパイラがこれらのコピーや移動を回避できるようにこれをコーディングする方法はありますか?
私は、コンパイラーが最善を尽くすことができると思うことと、私の質問自体の両方で多くの仮定をしました。正しくない場合は、これらのいずれかを修正してください。
c++11 - なぜC++標準はそのような恐ろしい使用を禁止しないのですか?
ソースコードは非常にシンプルで自明です。質問はコメントに含まれています。
jquery - .click後にjQueryが変数を渡さない
簡単な jQuery スクリプトを実行しています。2 つのボタンがあり、1 つはデータを送信し、1 つのボタンは最初の変数で送信される変数の 1 つの値を設定する必要があります。
わかりましたので、ボタン 1 のスクリプト (プレビューと呼ばれます) は次のとおりです。
これが行うことは、画像に効果を加えることであり、すべてが素晴らしく機能します。JavaScript の最初の行の 1 つに、「sourceImage」変数が含まれています。
その変数は、上記のスクリプトに正しく渡されます。2 番目のボタン (Save State と呼ばれます) は、画像の効果に満足しているものを確認して、画像の状態を保存し、その画像に対する効果を続行します。これは、ソース イメージを変更する必要があることを意味します。これには、次のスクリプトを使用します。
実際にトリガーされたかどうかを確認するために行を残しました$('#header').html(sourceImage);
が、そうであったため、この行は必要ありませんが、アクションがトリガーされていることは確かです。
ただし、「プレビュー」を再度クリックすると、変数sourceImageの値が元の値に戻りますが、実際にはこの新しい値を保持する必要があります。
私を助けてくれる人がいることを願っています。
c++ - この状況での値または参照セマンティクス?
状況によっては、値を選択するか参照セマンティクスを選択するかについての感覚がありません(まだ、私は願っています)。適用できる経験則はありますか?
私は通常、組み込みデータ型(char、int、bool、doubleなど)以外のすべての参照を選択します。ただし、関数から参照を返すことができない場合があるため、ポインターを使用する必要があります。次の関数はこの例です。
boost :: shared_ptrを使用してFooオブジェクトを保存しますが、オブジェクトの操作が非常に見苦しくなります。私は現在、10個を超える要素がほとんどないdequeを返す関数を調べています(これは私が想定していることですが、確認する方法はありません)。これを値で返すのは大丈夫でしょうか?私の考慮事項は時期尚早の最適化の場合ですか?