T.TAO
Back to Blog
/2 min read/Others

C++ Programming #3 ポインタと配列

C++ Programming #3 ポインタと配列

C++プログラミング #3 ポインタと配列

  • Lingheng Tao
  • 2024年1月14日
  • 読了時間 4 分

Algorithms & Data Structure Content List C++ Programming Content List Unity Shader Content Table

#GameProgramming#ComputerScience

このノートは C++ のポインタと配列の知識点をまとめます。

ポインタ

基本概念

ポインタ(Pointer)はメモリアドレスを格納し、メモリ内のデータに直接アクセスする。ポインタの値はアドレスである。

宣言と使用

Plain Texttype * ptr;
// or type* ptr;
// or type *ptr;

アドレス演算子 & で値変数のアドレスを取得し、ポインタに代入できる。

ヒープメモリの割り当て

C では malloc()、C++ では new を使用。使用後は delete(malloc の場合は free)で解放必須。

配列

静的配列

Plain TexttypeName arrayName [arraySize];

arraySize は定数でなければならない。

動的配列

Plain Textint *parray = new int[10];
// 使用後
delete[] parray;

ポインタ算数

T 型のポインタ p がアドレス X を指すとき:

Plain Text1. *(p+i) == X + sizeof(T) * i;
2. *(&Expr) == Expr;

C++ は配列名を先頭要素のアドレスと解釈する。A[i] は *(A+i) と解釈される。

配列全体のアドレスを取る場合、&A + 1 はアドレスに配列全体のサイズを加算する。