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

C言語の構造体変数へのアクセス方法を基礎から解説!サンプルコード付き

構造体(structure)とは

構造体とは、ユーザーが独自に定義できるデータ型(ユーザー定義型)の一つで、異なるデータ型のデータをひとまとめにして格納するために使われます。

構造体は配列とよく似ています。両者の違いは、配列が同じデータ型の要素のみを格納するのに対し、構造体は異なるデータ型を組み合わせて格納できるという点です。

構造体を宣言する際には、キーワード struct を使用します。また、構造体内で定義された変数のことを構造体のメンバー(member)と呼びます。

構造体の基本的な宣言方法

構造体は次のように宣言します。

struct 構造体名{
    // メンバーの宣言
};

構造体変数へのアクセス例

構造体のメンバーにアクセスするには、ドット演算子(.)を使用します。「構造体変数名.メンバー名」という形式で、各メンバーの読み書きが可能です。

以下は、学生の情報を格納する構造体変数にアクセスするC言語プログラムの例です。

#include<stdio.h>
// 構造体の宣言 //
struct{
    char name[50];      // 名前
    int roll;           // 出席番号
    float percentage;  // 平均点
    char grade[50];    // 成績
}s1, s2;

void main(){
    // ユーザー入力の読み込み //
    printf("enter Name of 1st student : ");
    gets(s1.name);
    printf("enter Roll number of 1st student : ");
    scanf("%d", &s1.roll);
    printf("Enter the average of 1st student : ");
    scanf("%f", &s1.percentage);
    printf("Enter grade status of 1st student : ");
    scanf("%s", s1.grade);

    // 結果の出力 //
    printf("The name of 1st student is : %s\n", s1.name);
    printf("The roll number of 1st student is : %d\n", s1.roll);
    printf("The average of 1st student is : %f\n", s1.percentage);
    printf("The student 1 grade is : %s and percentage of %f\n", s1.grade, s1.percentage);
}

実行結果

上記のプログラムを実行すると、以下のような結果が出力されます。

enter Name of 1st student: Bhanu
enter Roll number of 1st student: 2
Enter the average of 1st student: 68
Enter grade status of 1st student: A
The name of 1st student is: Bhanu
The roll number of 1st student is: 2
The average of 1st student is: 68.000000
The student 1 grade is: A and percentage of 68.000000

ポイントのまとめ

  • 構造体は struct キーワードを使って宣言する。
  • 構造体には int・float・char 配列など、異なるデータ型のメンバーを混在させられる。
  • メンバーへのアクセスは「s1.name」のようにドット演算子(.)で行う。
  • この例では、構造体宣言時に s1, s2 と記述することで、同時に構造体変数を定義している。

なお、文字列入力に使用している gets() 関数はバッファオーバーフローの危険があるため、実際の開発では fgets() の利用が推奨されます。

  1. C言語におけるユニオンとポインタの使い方を徹底解説

    ユニオン(共用体)とは、異なるデータ型を持つ複数の変数が、同一のメモリ領域を共有するための仕組みです。構造体が各メンバーごとに独立したメモリを割り当てるのに対し、ユニオンではすべてのメンバーが同じアドレスを参照するという点が大きな特徴です。 ユニオンの構文 ユニオンを定義するときの基本的な書式は次の通りです。 union タグ名{ データ型 メンバー1; データ型 メンバー2; ---- ---- データ型 メンバーn; }; 実際の記述例を見てみましょう。 union sample{ int a; float b; char

  2. C言語のポインタ入門!宣言・初期化から配列アクセスの実例まで徹底解説

    ポインタ(pointer)とは、他の変数のメモリアドレスを格納するための変数です。C言語においてポインタは、メモリを直接操作したり、関数間でデータを効率的にやり取りしたりするために欠かせない重要な概念です。 ポインタの宣言・初期化とアクセス まず、次のような通常の整数変数の宣言を見てみましょう。 int qty = 179; 変数qtyには値「179」が格納されると同時に、メモリ上のどこかにその格納場所(アドレス)が割り当てられます。 ポインタの宣言 int *p; 「p」はポインタ変数であり、別の整数型(int)変数のアドレスを保持します。変数名の前にアスタリスク(*)を付けることで、「こ