auの日記

プログラミング初心者の日記。(auはハンドルネームです)

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

実際に書いて動いたのですが、正直あまり理解できていない部分が多すぎました。

完全に理解するには「ポインタとアドレス」についてもっと理解しなければいけないと感じました。
今回はメモ程度にしておきます。