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 はアドレスに配列全体のサイズを加算する。
