Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で構造体へのポインタにアクセスする方法|アロー演算子の使い方を解説

構造体へのポインタとは

C言語において、構造体へのポインタとは構造体全体の先頭アドレスを保持するポインタのことです。

主に、連結リスト、ツリー構造、グラフといった複雑なデータ構造を実装する際に活用されます。

構造体のメンバにアクセスする際には、アロー演算子(->)と呼ばれる特別な演算子を使用します。

宣言方法

構造体へのポインタは、次のように宣言します。

struct tagname *ptr;

例えば、学生情報を扱う構造体へのポインタであれば、次のように記述します。

struct student *s;

メンバへのアクセス

ポインタ経由で構造体のメンバにアクセスするには、次の形式を使用します。

ptr->membername;

具体的には、s->snos->snames->marks のように記述します。

サンプルプログラム1

以下は、構造体へのポインタにアクセスするCプログラムの例です。

#include <stdio.h>

struct classroom {
    int students[7];
};

int main(void) {
    struct classroom clr = {2, 3, 5, 7, 11, 13};
    int *ptr;

    ptr = (int *)&clr;
    printf("%d", *(ptr + 4));

    return 0;
}

実行結果

11

解説

このプログラムでは、ポインタ変数 ptr が構造体オブジェクト clr の最初の要素(値 2)のアドレスを保持しています。その後、ポインタを4つ分進めた位置の値を参照し、画面に表示しています。

各位置とポインタの対応関係は以下の通りです。

*(ptr + 0) = 2
*(ptr + 1) = 3
*(ptr + 2) = 5
*(ptr + 3) = 7
*(ptr + 4) = 11
*(ptr + 5) = 13

サンプルプログラム2

続いて、より実践的な例として、学生情報をキーボードから入力し、ポインタ経由で各メンバを表示するプログラムを見てみましょう。

#include <stdio.h>

struct student {
    int sno;
    char sname[30];
    float marks;
};

int main(void) {
    struct student s;
    struct student *st;

    printf("enter sno, sname, marks : ");
    scanf("%d%s%f", &s.sno, s.sname, &s.marks);

    st = &s;

    printf("details of the student are\n");
    printf("Number = %d\n", st->sno);
    printf("name = %s\n", st->sname);
    printf("marks = %f\n", st->marks);

    return 0;
}

実行結果

enter sno, sname, marks :1 bhanu 69
details of the student are
Number = 1
name = bhanu
marks =69.000000

まとめ

構造体へのポインタは、通常のドット演算子(.)の代わりにアロー演算子(->)を使ってメンバにアクセスできる点が大きな特徴です。また、malloc関数などによる動的メモリ確保と組み合わせれば、実行時にサイズを決定できる柔軟なデータ構造を構築することも可能になります。C言語で本格的なプログラムを作成する上で必須となる概念なので、サンプルコードを実際に動かしながらしっかり理解しておきましょう。

  1. Windows 11でシステム言語を変更する方法【初心者向け完全ガイド】

    Windowsパソコンを初めてセットアップするとき、デフォルトのシステム言語を選択する画面が表示されます。実は、Windowsでは後からいつでもこの言語設定を自由に変更できるのです。引っ越しや海外赴任などでシステム言語の切り替えが必要になった場合でも安心してください。この記事では、Windows 10およびWindows 11でシステム言語を変更する具体的な手順を、ステップごとにわかりやすく解説します。Windows 11でシステム言語を変更する方法Windows 11では、システム言語を変更するための選択肢が豊富に用意されています。さらに、標準のオプションにとどまらず、メニューやダイアログボ

  2. Windows 7 の表示言語を変更する方法|初心者向けステップバイステップガイド

    自分が理解しやすい言葉でパソコンを操作できるのは、とても快適なことです。母国語が英語でない場合、英語のインターフェースでは戸惑うことも多いでしょう。しかし、Microsoftは英語以外の言語を話すユーザーにも配慮しており、Windows 7では表示言語を自由に変更できます。 この記事では、Windows 7で表示言語を変更する具体的な手順を、初心者の方にもわかるように丁寧に解説します。 Windows 7で表示言語を変更する手順 コントロールパネルから「地域と言語」ウィンドウを開きます。あるいは、スタートボタンをクリックして検索ボックスに「表示言語の変更(change display lan