タグ付けされた質問 「pointers」

メモリに格納されている別の値を「指す」データ型。ポインタ変数には、他のエンティティ(変数または関数または他のエンティティ)のメモリアドレスが含まれています。このタグは、参照ではなくポインタの使用を含む質問に使用する必要があります。ポインターを使用する最も一般的なプログラミング言語は、C、C ++、Go、およびアセンブリ言語です。特定の言語タグを使用します。他の有用なタグは、メソッド、関数、構造体などで、ポインタの使用を説明しています。

2
「<type>はインターフェースではなくインターフェースへのポインタです」混乱
仲間の開発者各位 私には少し奇妙に思えるこの問題があります。次のコードスニペットをご覧ください。 package coreinterfaces type FilterInterface interface { Filter(s *string) bool } type FieldFilter struct { Key string Val string } func (ff *FieldFilter) Filter(s *string) bool { // Some code } type FilterMapInterface interface { AddFilter(f *FilterInterface) uuid.UUID RemoveFilter(i uuid.UUID) GetFilterByID(i uuid.UUID) *FilterInterface } type FilterMap struct { mutex …
102 pointers  go  interface 

3
ベースへのポインタは派生オブジェクトの配列を指すことができますか?
今日は就職の面接に行って、この興味深い質問を受けました。 メモリリークと仮想dtorがないという事実に加えて、このコードがクラッシュするのはなぜですか? #include &lt;iostream&gt; //besides the obvious mem leak, why does this code crash? class Shape { public: virtual void draw() const = 0; }; class Circle : public Shape { public: virtual void draw() const { } int radius; }; class Rectangle : public Shape { public: virtual void …
99 c++  pointers 


4
Goにポインターがあることの意味は何ですか?
Goのポインターは関数の引数の変更を許可することを知っていますが、(適切なconstまたはmutable修飾子を使用して)参照のみを採用した方が簡単ではなかったでしょう。これで、ポインターが用意され、マップやチャネルなどの一部の組み込み型については、暗黙的に参照渡しされます。 何かが足りないのですか、それともGoのポインターが不必要な複雑なものなのですか?
98 pointers  go 


5
ポインタアドレスとポインタの値をインクリメントする方法は?
仮定しましょう、 int *p; int a = 100; p = &amp;a; 次のコードは実際に何をどのように実行しますか? p++; ++p; ++*p; ++(*p); ++*(p); *p++; (*p)++; *(p)++; *++p; *(++p); これはコーディングの面でやや面倒ですが、このようにコーディングすると実際に何が起こるか知りたいです。 注:のアドレスを想定してみましょう。アドレスが。のa=5120300ポインタに格納されています。さて、各ステートメントの実行後の値はどうなりますか?p3560200p &amp; a
96 c  pointers 

4
std :: unique_ptrを宣言する方法とその用途は何ですか?
私はどのようにstd::unique_ptr機能するかを理解しようとし、そのためにこのドキュメントを見つけました。著者は次の例から始めます。 #include &lt;utility&gt; //declarations of unique_ptr using std::unique_ptr; // default construction unique_ptr&lt;int&gt; up; //creates an empty object // initialize with an argument unique_ptr&lt;int&gt; uptr (new int(3)); double *pd= new double; unique_ptr&lt;double&gt; uptr2 (pd); // overloaded * and -&gt; *uptr2 = 23.5; unique_ptr&lt;std::string&gt; ups (new std::string("hello")); int len=ups-&gt;size(); 私を混乱させているのは、この行にあることです unique_ptr&lt;int&gt; uptr …
95 c++  pointers  std  unique-ptr 

17
関数ポインタのポイントは何ですか?
関数ポインタの有用性がわかりません。場合によっては(おそらく存在しますが)役立つと思いますが、関数ポインターを使用する方が良い場合や避けられない場合は考えられません。 (CまたはC ++での)関数ポインタの適切な使用例をいくつか教えてください。
94 c++  c  function  pointers  c++-faq 

1
Rustの「ファットポインター」とは何ですか?
「ファットポインタ」という用語はすでにいくつかの文脈で読んだことがありますが、それが正確に何を意味し、Rustでいつ使用されるかはわかりません。ポインタは通常のポインタの2倍の大きさのようですが、理由がわかりません。また、特性オブジェクトと関係があるようです。
94 pointers  rust 

6
C#関数を辞書に保存する
関数を格納できる辞書を作成するにはどうすればよいですか? ありがとう。 ユーザーから実行できる約30以上の機能があります。この方法で関数を実行できるようにしたい: private void functionName(arg1, arg2, arg3) { // code } dictionaryName.add("doSomething", functionName); private void interceptCommand(string command) { foreach ( var cmd in dictionaryName ) { if ( cmd.Key.Equals(command) ) { cmd.Value.Invoke(); } } } ただし、関数のシグネチャは常に同じではないため、引数の数が異なります。

12
ポインター宣言でのアスタリスクの配置
私は最近、C / C ++を最終的に習得する必要があると最近決定しました。ポインタについて、またはより正確には、その定義について、私が本当に理解していないことが1つあります。 これらの例はどうですか: int* test; int *test; int * test; int* test,test2; int *test,test2; int * test,test2; さて、私の理解では、最初の3つのケースはすべて同じことをしています:Testはintではなく、1へのポインターです。 2番目の例のセットは、もう少しトリッキーです。ケース4では、testとtest2の両方がintへのポインターですが、ケース5ではtestのみがポインターですが、test2は「実際の」intです。ケース6はどうですか?ケース5と同じ?
92 c++  c  pointers  declaration 

5
C / C ++でポインター変数を宣言する正しい方法[終了]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 9年前休業。 ポインタ変数の宣言に次の表記法を使用している人がいることに気づきました。 (a) char* p; の代わりに (b) char *p; (b)を使用します。表記(a)の背後にある合理的なものは何ですか?文字ポインタはそれ自体が型ではないため、表記(b)は私にとってより意味があります。代わりに、タイプは文字であり、変数は文字へのポインターである場合があります。 char* c; これはchar *型があり、変数cがその型であるように見えます。しかし、実際にはタイプはcharであり、* c(cが指すメモリ位置)はそのタイプ(char)です。複数の変数を一度に宣言すると、この違いが明らかになります。 char* c, *d; これは奇妙に見えます。cとdはどちらも、文字を指す同じ種類のポインタです。これで次のものはより自然に見えます。 char *c, *d; ありがとう。
91 c++  c  pointers  coding-style 

6
C ++でのポインターの削除
コンテキスト:私はポインターを頭にかぶろうとしています。数週間前に学校でそれらを見ただけで、今日練習しているときに、ばかげたことに遭遇しましたか?問題、それはあなたにとって非常に簡単ですが、プログラミングの経験はほとんどありません。 私はSOの中でポインタの削除についてかなり多くの質問を見てきましたが、それらはすべて「単純な」ポインタ(または適切な用語が何であれ)ではなくクラスの削除に関連しているようです、これが私がしようとしているコードです実行: #include &lt;iostream&gt;; using namespace std; int main() { int myVar, *myPointer; myVar = 8; myPointer = &amp;myVar; cout &lt;&lt; "delete-ing pointers " &lt;&lt; endl; cout &lt;&lt; "Memory address: " &lt;&lt; myPointer &lt;&lt; endl; // Seems I can't *just* delete it, as it triggers an error delete myPointer; cout …

3
値の代わりに範囲参照
範囲がキーと値の「コピー」を返すことを確認しました。その範囲でアイテムの住所を返す方法はありますか?例 package main import "fmt" type MyType struct { field string } func main() { var array [10]MyType for _, e := range array { e.field = "foo" } for _, e := range array { fmt.Println(e.field) fmt.Println("--") } } http://play.golang.org/p/AFOGG9NGpx ここでは、範囲がフィールドのコピーを送信するため、「フィールド」は変更されません。インデックスを使用する必要がありますか、それとも値を変更する他の方法がありますか? 読んでくれてありがとう。
91 pointers  reference  go 

8
CポインタをNULLに初期化することは可能ですか?
私は次のようなものを書いていた char *x=NULL; という前提で char *x=2; charアドレス2へのポインタを作成します。 しかし、GNU Cプログラミングチュートリアルではint *my_int_ptr = 2;、整数値2は、my_int_ptr割り当て時にランダムなアドレスに格納されると記載されています。 これは、自分char *x=NULLのNULLキャストの値がcharメモリ内のランダムなアドレスに割り当てられていることを意味しているようです。 ながら #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; int main() { char *x=NULL; if (x==NULL) printf("is NULL\n"); return EXIT_SUCCESS; } 実際には、印刷します 無効です コンパイルして実行するとき、未定義の動作、または少なくとも仕様不足の動作に依存していること、および char *x; x=NULL; 代わりに。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.