問題タブ [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++ - 特定のオブジェクトインスタンスでC++関数ポインタを呼び出す
私は次のように定義された関数ポインタを持っています:
C ++オブジェクトの特定のインスタンスでその関数を処理する方法はありますか?
編集: Orionは、Boostが提供する次のようなオプションを指摘しました。
残念ながら、ブーストは私にとってオプションではありません。メンバー関数へのポインターを通常の関数ポインターにラップするこの種のC++で記述できる、ある種の「カリー化」関数はありますか?
programming-languages - ポインタとは?
参照:ポインタについて
多くの C 風味の言語や、Fortran などの一部の古い言語では、Pointersを使用できます。
Basic、JavaScript、および ActionScript でしか実際にプログラミングしたことのない人として、Pointer とは何か、それが最も役立つのは何かを説明してもらえますか?
ありがとう!
c++ - ポインターを使用する理由
これが非常に基本的な質問であることは承知していますが、高水準言語でいくつかのプロジェクトをコーディングした後、基本的な C++ プログラミングを始めたところです。
基本的に、3 つの質問があります。
- 通常の変数にポインターを使用する理由
- いつ、どこでポインターを使用する必要がありますか?
- 配列でポインタをどのように使用しますか?
c++ - クラス内のポインタを含むガベージ、C ++
Borland BuilderC++を使用しています。メモリリークがあり、作成したこのクラスが原因である必要があることはわかっていますが、修正方法がわかりません。私のコードを見てください-どんなアイデアでも大歓迎です!
.hファイルは次のとおりです。
そして、ここにいくつかの.cppファイルがあります:
mainでクラスを使用する場合、基本的にはポインタを作成するだけです。
ここで、corners-> locationは別のクラスの文字列であり、t[5]とt[6]は両方とも文字列です。問題は、imageLocationに期待されるものが含まれておらず、多くの場合、ゴミだけが含まれていることです。私はメモリリークとポインタについてたくさん読んだことがありますが、私はまだプログラミングに非常に慣れておらず、そのいくつかは非常に混乱しています。どんな提案も素晴らしいでしょう!
c++ - void* ポインターの C++ 代替 (テンプレートではない)
C++ について根本的な誤解があったようです :<
ポリモーフィック コンテナ ソリューションが気に入っています。SO、私の注意を引いてくれてありがとう:)
したがって、比較的一般的なコンテナー タイプのオブジェクトを作成する必要があります。また、ビジネス関連のロジックをカプセル化することもあります。ただし、プリミティブ データ型から複雑なクラスまで、本質的に任意のデータをこのコンテナーに格納する必要があります。
したがって、すぐにテンプレート クラスのアイデアにジャンプして、それで完了します。ただし、C++ ポリモーフィズムとテンプレートがうまく連携しないことに気付きました。作業しなければならない複雑なロジックがあるため、テンプレートまたはポリモーフィズムのいずれかに固執し、両方を実行させて C++ と戦おうとはしません。
最後に、どちらか一方を実行したいので、ポリモーフィズムを優先します。「このコンテナには比較可能な型が含まれています」のような制約を表現する方がはるかに簡単だと思います-la Java。
質問のトピックに連れて行きます: 最も抽象的なのは、「push(void* data) と pop(void* data)」に似たものを持つ「コンテナー」の純粋な仮想インターフェイスを持つことができると想像します、実際にスタックを実装しようとしているわけではありません)。
ただし、トップレベルの void* はあまり好きではありません。言うまでもなく、具体的なコンテナーが処理できるデータの型に制約を追加するたびに、署名が変更されます。
要約: 要素を取得するさまざまな方法を持つ比較的複雑なコンテナーがあります。コンテナに入る要素の制約を変更できるようにしたいと考えています。要素は、複数の種類のコンテナーで動作する必要があります (特定のコンテナーの制約を満たす限り)。
編集:コンテナ自体が多態的である必要があることにも言及する必要があります。これが、テンプレート化された C++ を使用したくない主な理由です。
では、Java 型インターフェースへの愛を捨てて、テンプレートを使用するべきでしょうか? void* を使用して、すべてを静的にキャストする必要がありますか? または、何も宣言しない空のクラス定義「Element」を使用し、それを「Element」階層の最上位クラスとして使用する必要がありますか?
私がスタック オーバーフローを気に入っている理由の 1 つは、回答の多くが、私が考えもしなかった他のアプローチに関する興味深い洞察を提供してくれることです。ですから、あなたの洞察とコメントを事前に感謝します。
delphi - Delphi でオブジェクト メソッドをパラメータとして渡し、それを呼び出す方法は?
これはおそらく少しダミーの質問だと思いますが、かなり困惑しています。
プロシージャがオブジェクトのメソッドを呼び出すことができるように、オブジェクトのメソッドをプロシージャに渡す最も簡単な方法を探しています (たとえば、タイムアウト後、または別のスレッドで)。だから基本的に私はしたい:
- オブジェクトのメソッドへの参照をキャプチャします。
- その参照をプロシージャに渡します。
- その参照を使用して、プロシージャからオブジェクトのメソッドを呼び出します。
インターフェイスを使っても同じ効果が得られると思いますが、この「オブジェクトの手続き」型宣言が存在するので、別の方法があると思いました。
以下は機能しませんが、私が混乱している場所を説明するのに役立つでしょうか...?
(質問に答えたら、何らかの形で説明に役立つ場合を除き、上記のコードを削除します。)
c++ - ポインター宣言でのアスタリスクの配置
私は最近、最終的に C/C++ を学ばなければならないと決心しました。ポインター、またはより正確にはその定義について、私が本当に理解していないことが 1 つあります。
これらの例はどうですか:
int* test;
int *test;
int * test;
int* test,test2;
int *test,test2;
int * test,test2;
さて、私の理解では、最初の 3 つのケースはすべて同じことを行っています。Test は int ではなく、int へのポインターです。
2 番目の例は、もう少しトリッキーです。ケース 4 では、test と test2 の両方が int へのポインターになりますが、ケース 5 では、test のみがポインターであり、test2 は「実際の」int です。ケース6はどうですか?ケース5と同じ?
c - 別のシグニチャにキャストされた関数ポインタ
関数ポインターの構造を使用して、さまざまなバックエンドのインターフェイスを実装します。シグニチャは大きく異なりますが、戻り値はほとんどすべてvoid、void *、またはintです。
ただし、バックエンドがすべてのインターフェイス機能の機能をサポートしている必要はありません。したがって、2つの可能性があります。最初のオプションは、すべての呼び出しの前に、ポインターが等しくないNULLであるかどうかを確認することです。読みやすさとパフォーマンスへの影響を恐れているので、私はそれがあまり好きではありません(ただし、私はそれを測定していません)。もう1つのオプションは、ダミー関数を使用することです。まれに、インターフェイス関数が存在しない場合があります。
したがって、署名ごとにダミー関数が必要になります。異なる戻り値に対して1つだけ持つことができるのではないかと思います。そしてそれを与えられた署名にキャストします。
このコードをgccでテストしたところ、機能しました。しかし、それは正気ですか?または、スタックを破損したり、他の問題を引き起こしたりする可能性がありますか?
編集:すべての答えのおかげで、私はもう少し読んだ後、規約の呼び出しについて多くを学びました。そして今、内部で何が起こっているのかをよりよく理解することができます。
c++ - func(int ¶m) と func(int *param) の違いは何ですか?
次のコードでは、amp_swap()
との両方star_swap()
が同じことをしているように見えます。では、なぜ誰かがどちらか一方を使用することを好むのでしょうか? どちらが好ましい記法で、その理由は? それとも単に好みの問題ですか?
御時間ありがとうございます!
関連項目