[C++] ドット(.)と矢印(->)の演算子の違い
2 min read
解説
.(ドット演算子)
演算子は、オブジェクトが直接指定された場合に使用される。具体的には、 Person.age
は、 Person
オブジェクトの age メンバーにアクセスするために使用される。
一方、 ->(矢印演算子)
は、オブジェクトがポインタで指定された場合に使用される。具体的には、 Person->age
は、 Person
ポインタが指すオブジェクトの age
メンバーにアクセスするために使用される。矢印演算子は、ポインタの値を解除してから、そのオブジェクトのメンバーにアクセスするための省略表記である。
たとえば、以下のような構造体を定義したとする。
struct Person {
char name[20];
int age;
};
この場合、name
や age
にアクセスするためには、.(ドット演算子)
を使う。
struct Person p;
strcpy(p.name, "John");
p.age = 30;
一方、ポインタを使って構造体にアクセスする場合には、ポインタを->(矢印演算子)
で参照する。
struct Person *ptr;
ptr = &p;
strcpy(ptr->name, "John");
ptr->age = 30;
このように、C 言語でもドット演算子は構造体のメンバーにアクセスするために使用されるが、ポインタを使う場合には矢印演算子が使用される。