問題タブ [address-operator]

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 投票する
4 に答える
10054 参照

c++ - & (address-of) 演算子をオーバーロードしたい人がいるでしょうか?

重複の可能性:
単項演算子& をオーバーロードする正当な理由は何ですか?

私はこの質問を読んだばかりで、疑問に思わずにはいられません:

&("address-of") 演算子をオーバーロードしたいと思う人がいるでしょうか?

正当な使用例はありますか?

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

c++ - 静的メソッドを引数として渡しますが、アドレス演算子は必要ありませんか?

Boost.Thread をいじっていますが、静的メンバー関数を引数として渡すときに、演算子 (&) のアドレスを使用するかどうかは問題ではないように思われます。それは問題ではありませんか?そうでない場合、なぜですか?ある方法は他の方法よりも正しいですか?

0 投票する
4 に答える
164 参照

c - sizeof と addressof との明らかな不一致

sizeof(long) は 8 バイトを返しますが、&along (long のアドレス) は 12 桁の 16 進数 (48 ビット) または 6 バイトです。clang でコンパイルされた OS X 64 ビット。ここに不一致がありますか、それとも本物の 64 ビット アドレス空間ですか?

0 投票する
0 に答える
70 参照

c++ - オーバーロードされた address-of 演算子。オブジェクトのアドレスを知る方法

重複の可能性:
単項演算子 & のオーバーロード

そのようなクラスのオブジェクトのアドレスを特定することは可能ですか?

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

vb.net - vb.net共有サブシステムで変数を渡す

しかし、コードを起動すると、添付の画像に表示されるエラーが表示されます

エラー

しかし、奇妙なことに、私は探している値を渡します:

エラー 2

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

c++ - CUDA: 構造体の共有データ メンバーとその構造体への参照のメンバーが異なるアドレス、値を持つ

OK、問題は次のとおりです。CUDA 1.1 計算 GPU を使用して、スレッドごとに一連の (おそらくさまざまな数、ここでは 4 に固定されている) インデックスを維持しようとしています。私の問題は、メンバー配列にアクセスするときに構造体への参照を取得すると、結果が正しくないことです。メンバー配列の値を 0 で初期化し、元の構造体 var を使用して配列 vals を読み取ると、正しい値 (0) が得られます。 、しかし、構造体 var への参照を使用して読み取ると、ガベージ (-8193) が発生します。これは、構造体の代わりにクラスを使用している場合でも発生します。

なぜ tmp below != 0 ??

c++ は私の主要な言語ではないため、これは概念的な問題であるか、cuda での作業の癖である可能性があります。

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

c++ - 関数呼び出しにおける * 演算子と & 演算子の違い

重複の可能性:
C++ 関数: アンパサンドとアスタリスク
パラメータと組み合わせたさまざまな記号 (*、& など) の違いは何ですか?

C++ 関数呼び出しでのアドレス演算子&と参照演算子の違いが気になります。*たとえば、次の関数を使用します

関数内で次のように呼び出してみましょうmain()...

まず、関数で出力できるのに、なぜ&演算子は値をポインターであるかのように割り当てることを許可するのですか (ポインターではない場合、RAII と関数のスコープを存続する値を割り当てますfoo())。main()そうじゃないのにstatic?ポインターに使用されるのではなく、演算子size()を使用してメソッドにアクセスできるため、ポインターではないと想定しています。.->

&次に、関数パラメーターで演算子を使用する場合と演算子を使用する場合の違いは何*ですか? のような単純な変数とは違いますstd::string paramか? そのように(foo(test)ではなくfoo(&test))呼び出されているようです。

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

vba - ATL インターフェイスを実装する VBA クラスを ATL メソッドに渡す

編集 :

メソッドが 1 つしかない ATL シンプル オブジェクト MyATLObject があります。

toto は、によって定義されるテンプレート関数です。

FCTPTR は次のように定義されます。

typedef double (__stdcall * FCTPTR)( double );

私の ATL メソッドは、toto の結果を格納するために double x を消費し、VBA 関数の AddressOf である long AddressOfFunc を消費します。

この VBA 関数をアドレスによって ATL メソッドに渡します。それはかなりひどいです。たとえば、ATL側でインターフェイスを定義するなど、そうでなければ、VBA関数をATLメソッドに渡す同じことをどのように行うことができますか?

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

/////////////////////////////////////////////// /////////////////////////////////////////////// /////////////////////////////////////////////// ///////////////////////////////

私の質問の最初のバージョン:

私は実際に次のことを行っています: ATL/COM プロジェクトを作成し、それに MyATLObject という「単純な ATL オブジェクト」を追加します:

1) idl ファイル内:

2 MyATLObject.h ファイル内:

そして

クラス外、クラス内

そして最後に MyATLObject.cpp ファイルで:

MyStupidEvaluator.h には以下が含まれます。

これは、() 演算子を受け入れる型名 (またはクラス) である関数オブジェクトのゼロの値を返す単なるテンプレート関数です。

これで、コンパイル後に dll が得られます。

C++ の部分はこれですべてです。今、私は VBA と VBA でこの dll を参照しています:

a) 関数を定義する

b) とサブ

c) このサブルーチンを実行すると、シート「Test1」の範囲 V「alue_at_0」(ここではセルのみ) で、関数 F の 0.0 の値が得られます。

私はいつもこのように作業しています: toto テンプレート関数はここでは自明です (0.0 での評価) が、一般的には数値積分ルーチン、または高速化のために C++ が必要なルート検索ルーチンである可能性があります。AddressOf VBA キーワードのおかげで、私は常に VBA 関数をそのアドレスを介して渡しています。これにより、ATL メソッド EVAL に渡す long が得られ、この long を関数ポインタ (FCTPTR) p に変換し、ルーチンを適用します" toto" を *p に変換すると、ATL メソッドに返される double が返されます。

それはクールです、すべてが機能しますが...私はこれがひどいと思います!!! そして本当にエレガントではありません。それが私が次のことをしたい理由です:

ATL側のインターフェースを「何とか」設計し、

これは、VBA クラス VBAClass1 によって VBA に (VBA の実装を通じて) 実装され、その VBA クラスのインスタンスを以前の VBA メソッドの新しいバージョンに渡して、0.0 で評価を実行します。

私の問題は次のとおりです。私はATLの専門家でも、インターフェイスの作成の専門家でもありません。インターフェイスの作成で本当にばかげた/些細なことをすることに成功しました。私がやりたいこと、つまり:

ATL のインターフェイス (定義上、ATL 構造によってメソッドのみを持ちます!) クラスのメンバーの役割を果たす「何か」を持ち、ATL を介して渡される VBA 関数を追跡するメンバー方法。

皆さん、どんな助けも大歓迎です。

ここに来るのは初めてなので、メッセージが完璧/最適な形式でない場合は、事前に申し訳ありません.

前もって感謝します。

ラフ

0 投票する
9 に答える
17163 参照

c - Cの変数にアドレスを割り当てることはできますか?

変数にメモリ内の必要なアドレスを割り当てることは可能ですか?

そうしようとしましたが、「割り当ての左オペランドとして左辺値が必要です」というエラーが表示されます。

私のアプローチの何が問題になっていますか?C で、必要なアドレスを変数に割り当てる方法はありますか?