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

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

12
ポインターとリファレンス
機能する元の変数を関数に与える場合のより良い実践とは: unsigned long x = 4; void func1(unsigned long& val) { val = 5; } func1(x); または: void func2(unsigned long* val) { *val = 5; } func2(&x); IOW:別のものを選ぶ理由はありますか?


7
C ++でオブジェクトを関数に渡す方法は?
C ++プログラミングは初めてですが、Javaの経験があります。C ++で関数にオブジェクトを渡す方法に関するガイダンスが必要です。 ポインター、参照、または非ポインターと非参照の値を渡す必要がありますか?オブジェクトへの参照を保持する変数のみを渡すため、Javaではそのような問題はありません。 これらの各オプションをどこで使用するかについても説明していただければ幸いです。

7
size_tとuintptr_tの比較
C標準でsize_tは、任意の配列インデックスを保持できる型であることを保証しています。つまり、論理的には、size_t任意のポインタ型を保持できる必要があります。これは合法であり、常に機能するはずであるとGoogleで見つけたいくつかのサイトで読んだことがあります。 void *v = malloc(10); size_t s = (size_t) v; そのため、C99では、標準によりintptr_tおよびuintptr_t型が導入されました。これらは、ポインタを保持できることが保証されている符号付きおよび符号なしの型です。 uintptr_t p = (size_t) v; だから、使用しての違いは何であるsize_tとはuintptr_t?どちらも符号なしであり、どちらも任意のポインタ型を保持できるはずなので、機能的には同じように見えます。明快さ以外に、aよりもuintptr_t(またはもっと良いのはa void *)を使用する本当に説得力のある理由はありますsize_tか?フィールドが内部関数によってのみ処理される不透明な構造で、これを行わない理由はありますか? 同様に、ptrdiff_tポインタの違いを保持できる符号付きの型であり、したがってほとんどのポインタを保持できるので、それはどのように区別されintptr_tますか? これらのタイプはすべて、基本的に同じ機能のわずかに異なるバージョンを提供しているのではないですか?そうでない場合、なぜですか?それらの1つを使用して、他のユーザーを使用してできないことは何ですか?もしそうなら、なぜC99は2つの本質的に不必要な型を言語に追加したのですか? 関数ポインターは現在の問題には当てはまらないため、無視してもかまいませんが、「正しい」答えの中心となるのではないかという疑惑があるので、遠慮なく触れてください。
246 c  pointers  size-t 

14
クラスデータメンバー“ :: *”へのポインター
私はうまくコンパイルするこの奇妙なコードスニペットに出くわしました: class Car { public: int speed; }; int main() { int Car::*pSpeed = &Car::speed; return 0; } なぜ C ++には、クラスの非静的データメンバーへのこのポインターがあるのですか?実際のコードでこの奇妙なポインターの使用は何ですか?
242 c++  class  pointers  c++-faq 

4
いつどのようなポインターを使用しますか?
さて、私が生計を立てるためにC ++を最後に書いたのstd::auto_ptrは、すべてのstd libが利用でき、大流行していましたboost::shared_ptr。提供されている他のスマートポインターの種類のブーストを実際に調べたことはありません。C ++ 11が、ブーストで生まれた型のいくつかを提供することを理解していますが、すべてではありません。 では、誰かがどのスマートポインターをいつ使用するかを決定する簡単なアルゴリズムを持っているのでしょうか。できれば、ダムポインター(のような生のポインターT*)とブーストスマートポインターの残りの部分に関するアドバイスを含めます。(このような何かが素晴らしいでしょう)。


7
C ++で参照渡しよりもポインタ渡しの利点はありますか?
C ++で参照渡しよりポインタ渡しの利点は何ですか? 最近、参照で渡すのではなく、ポインタで関数の引数を渡すことを選択した多くの例を見てきました。これを行うメリットはありますか? 例: func(SPRITE *x); の呼び出しで func(&mySprite); 対 func(SPRITE &x); の呼び出しで func(mySprite);

8
Cのchar配列とcharポインタの違いは何ですか?
私はCのポインターを理解しようとしていますが、現在は以下と混同しています。 char *p = "hello" これは、hから始まる文字配列を指すcharポインターです。 char p[] = "hello" これはhelloを格納する配列です。 これらの両方の変数をこの関数に渡したときの違いは何ですか? void printSomething(char *p) { printf("p: %s",p); }
216 c  arrays  pointers 

17
関数で配列を返す
int arr[5]関数に渡される配列がありますfillarr(int arr[]): int fillarr(int arr[]) { for(...); return arr; } どうすればその配列を返すことができますか? ポインターを返したとしたら、どのように使用しますか?

25
メモリアドレスでない場合、Cポインタとは正確には何ですか?
Cに関する評判の良い情報源では、&演算子について説明した後で、次の情報が提供されています。 ... [アドレス]という用語が残っているのは少し残念です。アドレスが何であるかを知らない人を混乱させ、誤解させます。ポインタをアドレスのように考えることは、通常、悲しみにつながります。 。 私が読んだ他の資料(同じように評判の良い情報源からのものだと思います)は、常にポインタと&演算子をメモリアドレスを与えるものとして言及していました。私は問題の現実を探り続けたいと思いますが、信頼できる情報源が同意しない場合、それは一種の困難です。 さて、少し混乱しています。正確に言えば、ポインタとは、メモリアドレスではないのでしょうか。 PS 作者は後にこう述べています...私は別のものを発明するので、しかし長期的「のアドレス」を使用していきます [用語]はさらに悪化するだろう。

17
Cでの参照渡し
Cが参照による変数の受け渡しをサポートしない場合、なぜこれが機能するのですか? #include <stdio.h> void f(int *j) { (*j)++; } int main() { int i = 20; int *p = &i; f(p); printf("i = %d\n", i); return 0; } 出力: $ gcc -std=c99 test.c $ a.exe i = 21



3
XはYを実装していません(…メソッドにはポインターレシーバーがあります)[終了]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 4ヶ月前に閉鎖。 この質問を改善する この「XはYを実装しない(...メソッドにはポインターレシーバーがある)」というQ&Aはすでにいくつかありますが、私には、彼らはさまざまなことについて話しているようで、私の特定のケースには当てはまりません。 だから、質問を非常に具体的にする代わりに、私はそれを広く抽象的なものにしています-このエラーを引き起こす可能性のあるいくつかの異なるケースがあるようです、誰かがそれを要約できますか? つまり、問題を回避する方法、およびそれが発生した場合、可能性は何ですか?どうも。

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