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

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




18
配列の場合、なぜa [5] == 5 [a]になるのですか?
Joel がCプログラミング言語(別名:K&R)のStack Overflowポッドキャスト#34で指摘しているように、Cでは配列のこのプロパティについて言及されています。a[5] == 5[a] ジョエルは、それはポインター演算のせいだと言いますが、私はまだ理解していません。なぜa[5] == 5[a]ですか?

21
オブジェクト自体ではなくポインタを使用する必要があるのはなぜですか?
私はJavaの出身で、C ++でオブジェクトの操作を開始しました。しかし、私に起こったことの1つは、人々はしばしばオブジェクト自体ではなくオブジェクトへのポインタを使用することです。たとえば、次の宣言: Object *myObject = new Object; のではなく: Object myObject; または、関数を使用する代わりにtestFunc()、次のようにしましょう: myObject.testFunc(); 私たちは書く必要があります: myObject->testFunc(); しかし、なぜこのようにする必要があるのか​​理解できません。メモリアドレスに直接アクセスできるので、効率と速度に関係していると思います。私は正しいですか?
1602 c++  c++11  pointers  c++-faq 



13
nullptrとは正確には何ですか?
これで、C ++ 11に多くの新機能が追加されました。(少なくとも私にとって)面白くて混乱するのは、新しいnullptrです。 まあ、厄介なマクロはもう必要ありませんNULL。 int* x = nullptr; myclass* obj = nullptr; それでも、nullptr動作がわかりません。たとえば、Wikipediaの記事では次のように述べています。 C ++ 11では、これを修正するために、識別されたnullポインター定数として機能する新しいキーワード nullptrを導入しています。これはnullptr_t型であり、暗黙的に変換可能であり、任意のポインター型またはメンバーへのポインター型と比較できます。boolを除いて、暗黙的に変換したり、整数型と比較したりすることはできません。 キーワードと型のインスタンスはどうですか? また、nullptr古き良きより優れている別の例(ウィキペディア以外のもの)はあり0ますか?
570 c++  pointers  c++11  nullptr 


5
C ++で配列を使用するにはどうすればよいですか?
C ++はCから継承した配列であり、事実上どこでも使用されています。C ++は、使いやすく、エラーが発生しにくい抽象化を提供します(std::vector<T>C ++ 98 std::array<T, n>以降およびC ++ 11以降)。そのため、配列の必要性は、Cの場合ほど頻繁には発生しません。 Cで記述されたコードを記述したり、ライブラリとやり取りしたりするには、配列がどのように機能するかをしっかりと把握する必要があります。 このFAQは5つの部分に分かれています。 型レベルの配列と要素へのアクセス 配列の作成と初期化 割り当てとパラメーターの受け渡し 多次元配列およびポインターの配列 配列を使用する際の一般的な落とし穴 このFAQに重要な何かが欠けていると思われる場合は、回答を書き、ここに追加部分としてリンクしてください。 次のテキストでは、「配列」は「C配列」を意味し、クラステンプレートではありませんstd::array。C宣言子構文の基本的な知識があることを前提としています。の手動での使用newとdelete以下に示すように、例外に直面すると非常に危険ですが、それは別のFAQのトピックです。 (注:これは、Stack OverflowのC ++ FAQへのエントリになることを目的としています。このフォームでFAQを提供するという考えを批評したい場合は、これをすべて開始したメタへの投稿がそのための場所になります。回答その質問は、C ++チャットルームで監視されます。ここでは、FAQのアイデアが最初から始まっているため、アイデアを思いついた人があなたの答えを読む可能性が非常に高くなります。


6
Typedef関数ポインター?
StackаэтотвопросестьответынаStack Overflowнарусском:typeакработаетtypedefвэтомкоде? DLLを動的にロードする方法を学習していますが、理解できないのはこの行です typedef void (*FunctionFunc)(); 少し質問があります。誰かがそれに答えることができれば私は感謝しています。 なぜtypedef使用されるのですか? 構文は奇妙に見えます。後にvoid関数名や何かがあるべきではありませんか?匿名関数のように見えます。 関数のメモリアドレスを格納するために関数ポインタが作成されていますか? だから私は今混乱しています。わかりやすく説明してもらえますか?
459 c++  c  pointers  typedef 

28
ポインターを理解するための障壁は何ですか?それらを克服するために何ができるでしょうか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 ポインターが、CまたはC ++の多くの新しい、さらには古い、大学生レベルの学生にとって混乱の主な要因であるのはなぜですか?ポインターが変数、関数、およびレベルを超えてどのように機能するかを理解するのに役立つツールまたは思考プロセスはありますか? 誰かが「ああ、わかった」のレベルに到達するために、全体的なコンセプトに夢中にならないようにするために実行できるいくつかの優れた実践方法は何ですか?基本的に、シナリオのようにドリルします。
449 c++  c  pointers 


11
freeはどのようにして解放する量を知っていますか?
Cプログラミングでは、解放する引数として任意の種類のポインタを渡すことができますが、解放するために割り当てられたメモリのサイズはどのようにしてわかりますか?いくつかの関数へのポインターを渡すときはいつでも、サイズも渡す必要があります(つまり、10要素の配列は、配列のサイズを知るためにパラメーターとして10を受け取る必要があります)。ただし、サイズを渡す必要はありません。無料機能。なぜそうしないのか、そして同じ長さの関数を自分の関数で使用して、配列の長さの追加の変数をあちこち移動する必要がないようにすることができますか?
385 c  size  pointers  free 

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