C言語のアロー演算子
auです。
今回は、アロー演算子について書きたいと思います。
アロー演算子とは
アロー演算子とは、構造体をポインタを使って作った際に使う、メンバを参照するの為の演算子です。
data[i].id, data[i].name, data[i].age, data[i].address
前回使用”printf”の文中で使った”.(ドット)”の部分を”->”に変えることで、ポインタへアクセスすることができます。
実際に使ってみます
#include<stdio.h> struct student { int id; char name[30]; int age; char address[30]; }; typedef struct student student_data, student_p; int main(void) { student_data data[] = { {1, "Sato", 20, "Tokyo"}, {2, "Tanaka", 23, "Kanagawa"}, {3, "Takahashi", 30, "Tochigi"}, {4, "Saito", 21, "Gunma"} }; student_p *p; // 構造体のポインタpの宣言 p = data; // ポインタpに構造体dataの先頭アドレスを代入 for (int i = 0; i < 4; i++) { printf("id: %d name: %s age: %d address: %s\n", (p + i)->id, (p + i)->name, (p + i)->age, (p + i)->address); } return 0; } // 実行結果 id: 1 name: Sato age: 20 address: Tokyo id: 2 name: Tanaka age: 23 address: Kanagawa id: 3 name: Takahashi age: 30 address: Tochigi id: 4 name: Saito age: 21 address: Gunma
実際に書いて動いたのですが、正直あまり理解できていない部分が多すぎました。
完全に理解するには「ポインタとアドレス」についてもっと理解しなければいけないと感じました。
今回はメモ程度にしておきます。