問題タブ [pointers]
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 - Cで定数関数ポインタの配列を宣言するにはどうすればよいですか?
次のように、関数へのポインターの配列を宣言する必要があります。
ただし、配列を定数として宣言する必要があります-配列内のデータとデータへのポインターの両方。残念ながら、const キーワードをどこに配置すればよいか思い出せません。
実際のポインター (この場合は MESSAGE_HANDLERS) は、配列として宣言されているため、既に一定であると想定しています。一方、配列内の関数ポインタは、示されているように宣言されている場合、実行時に変更できませんか?
c++ - PC/Visual C++ でポインターがスタック上にあるかどうかを確認する方法
[これは具体的には PC/Visual C++ 用です (ただし、他の回答は非常にわかりやすいでしょう :))]
ポインターがスタック内のオブジェクトから来ているかどうかをどのように判断できますか? 例えば:
したがって、2 番目のアサート(pB)のみがトリップするはずです。インライン アセンブリを使用して、それが SS セグメント レジスタ内にあるかどうかを判断することを考えています。このための組み込み関数があるかどうか、またはこれを行う簡単な方法があるかどうかは誰にもわかりませんか?
ありがとう!RC
c# - ツリーをゼロから実装する
木をゼロから実装して、木について学ぼうとしています。この場合、C# Java または C++ で実行したいと思います。(組み込みメソッドを使用しない場合)
したがって、各ノードにはキャラクターが格納され、ノードごとに最大 26 個のノードが存在します。
各ノードへのポインターを格納するには、どのデータ構造を使用しますか?
基本的に、基数ツリーをゼロから実装しようとしています。
ありがとう、
c - C ポインターの混乱
文字列をメモリに保存し、後で読みたい:
行 B と行 D は同じアドレスを示していますが、行 C の printf はセグメンテーション違反で失敗します。私は何が欠けていますか?
どんな助けでも本当に感謝します!
c++ - ポインターを介した 2 次元 (または 3 次元) 配列へのアクセス
次のような配列がある場合:
そしてあなたは次のようにします:
これが機能する方法ですか?
よくわかりませんが、それが機能するかどうかに依存するコードが少しあります。
c - ANSI C: 配列および配列へのポインターの割り当て
以下は、私がやろうとしていることの単純化されたバージョンです。なぜなら、パーティクル システムの構造体と関数プロトタイプのセット全体をくまなく調べたくないからです。
本質的に、コメントが示すように、コンパイル エラーが発生します。Emitter 構造体と createEmitter のシグネチャで「float material[4][4]」を使用するなど、いくつかの方法を試しました。ただし、後で次を使用して変更のために値をパーティクルにコピーしようとすると、次のようになります。
すべてが float[4][4] 型として宣言されているにもかかわらず、コピー時に別の型の不一致が発生します。要するに、4x4 配列の配列から 4x4 配列を取得し、それをエミッタ構造体に記録してから、パーティクル構造体にコピーしたいと考えています。しかし、実際に値をコピーしたいのは一度だけです。
perl - Win32:API を使用して DLL にポインターを渡すにはどうすればよいですか?
DLL 関数に 3 つのポインターを渡そうとしています。私は持っている:
DLL は次のように定義されます。DLL はvoid dllfunction(int* a, char* str, int* len);
、3 つのポインターが指すすべての変数を変更します。
ただし、これを実行するとセグメンテーション違反が発生します。Win32::APIのドキュメントでは、Perl 変数参照の代わりに実際の変数名を使用する必要があると指定されています。私が欠けているものを誰か教えてもらえますか?ありがとう。
*詳しくは:
printf()
3 つのポインターのアドレスを出力するために DLLを追加しprintf
、3 つの変数の参照を出力するために Perl を追加しました。そして、私は次のようになります
DLL : コード = 0x10107458 エラー = 0x10046b50 str = 0x10107460
Perl : コード = 0x101311b8 エラー = 0x101312a8 str = 0x10131230
DLL が間違ったアドレスを取得している理由がわかりましたか?
****詳しくは
多くのデバッグの後、DLL 関数から戻るときにこれが発生していることがわかりました。printf("done\n"); を追加しました。このDLL関数の最後の行として、これが出力され、プログラムがsegfaultします。Win32::API で起こっていると思いますか? 誰もこれを経験しましたか?
また、DLL から 3 つの変数すべての初期変数にアクセスできます。そのため、ポインタは正しく渡されますが、何らかの理由で DLL から戻るときに segfault が発生します。新しいデータを Perl 変数にコピーしようとするとセグメンテーション違反になるのでしょうか?
objective-c - Objective-C では、クラスとクラスのインスタンスの違いをどのように見分けることができますか?
Objective-C にジェネリック ポインタがあるとします。このポインターは、Class
オブジェクトであるか、そのクラスのインスタンスである可能性があります。両者の違いを見分ける方法はありますか?
例:
適切な値
を返すようにするには、関数をどのように記述すればよいでしょうか?is_this_a_Class
bool
language-agnostic - 3 つのレベルの間接化の理由を見つけたことがありますか?
私のお気に入りの本 (Ellen Ullman の The Bug) をパラパラとめくるだけで、あるプログラマーが別のプログラマーに 3 つのレベルの間接性で直面している小さな部分があります。
二重間接参照のアイデアが浮かびました。これは、ポインタを関数に渡し、関数内で作成されたオブジェクトを指すようにする方法です。
しかし、3 つ (またはそれ以上) のレベルの間接化を使用する理由はありますか?
c++ - ポインタ値 0x7c7c7c7c の特別な意味
Linux アプリのデバッグ中に、疑わしい値 0x7c7c7c7c を持つポインターを見つけました。その特定の値は何かを示していますか?
(MSVC 時代から、デバッグ ビルドでは、0xcdcdcdcd や 0xdddddddd などの値が、初期化されていない、解放された、または無効なヒープ ブロックに格納されることを知っているので、質問します。初期化されていないメモリで 0xdeadbeef や 0xcafebabe などの魔法の値を使用する人もいます。 libc などの何かが 0x7c7c7c7c をマジック値として使用していると推測していますが、文書化されていません。)