C言語のポインタ変数の演算で留意すべき事項
C言語でポインタ変数の演算を行う際には、以下の点に注意する必要がある。
- ポインタ演算はポインタ型にのみ適用でき、他のタイプの変数には適用できません。
- ポインタ変数の演算は加算と減算のみ可能で、それ以外の算術演算はできません。
- ポインタ変数の加算演算は、ポインタの値に整数を足して新しいポインタ値を得ることです。新しいポインタ値は、元のポインタが指していたメモリ位置より後に位置します。
- ポインタ変数の減算演算は、ポインタの値から整数を減じて、新しいポインタの値を取得します。新しいポインタの値は、元ポインタが指していたメモリ位置より手前の位置を指します。
- ポインタ変数の足し算の結果の型もポインタ型になる。
- ポインタ変数は減算演算を行うことができ、その結果は2つのポインタ間の距離、つまりそれらの間にある要素の数になります。
- ポインタ変数同士の演算結果は、2つのポインタの間の距離を保持できる 符号付き整数型である ptrdiff_t 型です。
- ポインタ演算を行うときにはポインタ変数が指しているメモリアクセスが合法であることを確認し、配列の境界を超えることや無効なメモリアドレスにアクセスしてはいけない。
- ポインタ演算を行う際は、ポインタの型と、参照するデータの型が一致しているか確認する必要があります。一致していない場合は、誤った結果や未定義の動作が発生する可能性があります。