アロー演算子
アロー演算子とは
アロー演算子は、ポインタが指す構造体(クラス)のメンバへアクセスするために使用する演算子
使用方法:
構造体のポインタ -> メンバ名
必要知識:
//ーーーーポインタが指す構造体のメンバへのアクセスについてーーーーーーーーーー
ポインタが指す構造体のメンバへのアクセス方法
ポインタが指す構造体へのアクセス:「*」を使用
構造体のメンバへのアクセス:「.」を使用
「*」はポインタが指す先のデータへアクセスするための演算子であり、そのデータが構造体であっても同様に使うことが可能
使用方法:
*構造体ポインタ型変数
メンバへのアクセス方法
(*構造体ポインタ型変数).メンバ名
()は、演算順序の優先順位のため、つける。
例:
code:c
//ヘッダファイルのインクルード
//構造体の型定義
struct data {
//変数の宣言
int x; //変数x
int y; //変数y
//ポインタの宣言
int *z; //ポインタz
};
//メイン処理
int main(void){
//構造体変数名の宣言
struct data d; //構造体の変数名をdにする。
struct data *pd; //構造体の変数名を*paにする。
//変数の宣言
int a; //変数a
//数値の代入
a= 3;//a = 3を入れる
d.x = 1; //構造体 dataのメンバxにアクセス、1を入れる。
d.y = 2; //構造体 dataのメンバyにアクセス、2を入れる。
d.z = &a; //構造体dataのメンバ *z(ポインタz)にアクセス、 aを指す。
pd = &d; //ポインタpdは、構造体dを指す。
//各数値の表示
printf("d.x = %d\n", (*pd).x); //ポインタpdが指す、構造体d (data)のxの数値を表示
printf("d.x = %d\n", d.x); //構造体d (data)のxの数値を表示
printf("d.y = %d\n", (*pd).y); //ポインタpdが指す、構造体d (data)のyの数値を表示
printf("*(d.z) = %d\n", *((*pd).z)); //ポインタpdが指す、構造体d(data)のポインタzの数値を表示
return 0; //戻り値 (0を返せば正常終了)
}
//ーーーーポインタが指す構造体のメンバへのアクセスについて終了ーーーーーーーーーー
アロー演算子は、上記
ポインタが指す構造体のメンバへのアクセスを簡単にする。
※アロー演算子が使えるのは、ポインタが指す構造体のみで、実態のある構造体には使用できない。
使用方法:
構造体のポインタ -> メンバ名
例:上記プログラムをアロー演算子を用いて作成する。
code:c
//ヘッダファイルのインクルード
//構造体の型定義
struct data {
//変数の宣言
int x; //変数x
int y; //変数y
//ポインタの宣言
int *z; //ポインタz
};
//メイン処理
int main(void){
//構造体変数名の宣言
struct data d; //構造体の変数名をdにする。
struct data *pd; //構造体の変数名をポインタpd(*pa)にする。
//変数の宣言
int a; //変数a
//数値の代入
a= 3;//a = 3を入れる
pd = &d; //ポインタpdは、構造体dを指す。
pd -> x = 1; //ポインタpdの指す、構造体dのメンバxに1を入れる。
pd -> y = 2; //ポインタpdの指す、構造体dのメンバyに2を入れる。
pd -> z = &a; //ポインタpdの指す、構造体dのメンバ*zの指す先をaにする。
//各数値の表示
printf("d.x = %d\n", pd -> x); //ポインタpdが指す、構造体d (data)のxの数値を表示
printf("d.y = %d\n", pd -> y); //ポインタpdが指す、構造体d (data)のyの数値を表示
printf("*(d.z) = %d\n", *(pd -> z)); //ポインタpdが指す、構造体d(data)のポインタzの数値を表示
return 0; //戻り値 (0を返せば正常終了)
}
typedef及び
実体化の書き方