生ポインターとアドレス演算子
ポインターを宣言し、&でアドレスを取得して、ポインター型を理解します。
「生ポインターとアドレス演算子」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。
ポインターとは何か
ポインターは、別のオブジェクトのアドレスを保持します。値としてメモリ上の位置を持つ変数です。
ポインターの宣言
ポインター型はT*です。慣例として、*は型の側に置きます。
int x = 10;
int* p = &x; // p holds the address of x
std::cout << p; // prints an address
std::cout << *p; // prints 10アドレス演算子
単項演算子&は、変数のアドレスを取得します。結果の型はT*です。
int x = 42;
int* p = &x;間接参照演算子
単項演算子*は、ポインターが指すオブジェクトの読み取りや書き込みを行います。
*p = 100;
std::cout << x; // 100 (x changed through p)nullポインター
どこも指していないポインターにはnullptrを設定してください。間接参照すると未定義動作になります。
int* p = nullptr;
if (p == nullptr) {
std::cout << "no target\n";
}ポインターの正体は数値
アドレスは単なる整数です(多くの場合は64ビットです)。ポインター型によって、コンパイラーはそのアドレスにあるバイト列をどのように解釈するか判断します。
constへのポインターとconstポインター
constを置く位置は、互いに独立した2箇所あります。
int x = 1, y = 2;
const int* p1 = &x; // pointer to const int (cannot modify *p1)
int* const p2 = &x; // const pointer to int (cannot reseat)
const int* const p3 = &x; // bothポインターのサイズ
同じプラットフォーム上では、すべてのポインターのサイズは同じです。通常、64ビットシステムでは8バイトです。char* も64ビット幅です。
関数ポインター
関数のアドレスを取得し、そのポインターを通じて関数を呼び出せます。
int square(int x) { return x * x; }
int (*fp)(int) = □
std::cout << fp(5); // 25メンバーへのポインター
クラスメンバーへのポインターには専用の構文があります。現代のコードではあまり使われず、ほとんどのコールバックではstd::functionやラムダ式を使います。
ポインターが重要な理由
ポインターは次の機能を支えています。
- 動的メモリ(
new/deleteまたはスマートポインター) - オプショナルな参照(nullを許容)
- ポリモーフィズム(基底クラスのポインターを通じた仮想ディスパッチ)
- C APIとの相互運用
クイックチェック
&xという式は何を評価しますか?
まとめ
ポインターはアドレスを保持します。&でアドレスを取得し、*で指し先を読み取ったり書き込んだりします。nullptrは安全なヌル値です。ポインターは動的メモリ、オプショナルな参照、ポリモーフィズムを支えています。
AI チューターと学ぶ C++ — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 51
- レッスン
- 203
よくある質問
「生ポインターとアドレス演算子」レッスンは無料ですか?
はい。「生ポインターとアドレス演算子」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。
「生ポインターとアドレス演算子」で何を学びますか?
ポインターを宣言し、&でアドレスを取得して、ポインター型を理解します。 ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C++ Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「生ポインターとアドレス演算子」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC++ Academyレッスンでコードを書いて実行できますか?
はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 生ポインターとアドレス演算子
- デリファレンスとポインター演算
- nullptrとnullポインターの安全性
- ポインターと参照の使い分け