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

【C言語】構造体の個々のメンバーを関数の引数として渡す方法をわかりやすく解説

構造体の値を関数へ渡す3つの方法

C言語では、構造体の値をある関数から別の関数へ受け渡す方法として、主に次の3つがあります。

  • 個々のメンバーを引数として関数に渡す

  • 構造体全体を引数として関数に渡す

  • 構造体のアドレス(ポインタ)を引数として関数に渡す

本記事では、この中から「構造体の個々のメンバーを引数として関数に渡す方法」に焦点を当てて解説します。

個々のメンバーを渡す仕組み

構造体の各メンバーを個別に渡す場合のポイントは以下の2点です。

  • 関数呼び出し時に、各メンバーをそれぞれ独立した引数として渡します。

  • 関数側(仮引数)では、それらを通常の変数として個別に受け取ります。

この方法は「値渡し」となるため、関数内で仮引数の値を変更しても、呼び出し元の構造体には影響しません。読み取り専用のデータ処理に適した手法です。

サンプルプログラム1:日付構造体の場合

以下は、日付を表す構造体の各メンバーを関数に渡して表示するCプログラムです。

#include<stdio.h>
struct date{
    int day;
    int mon;
    int yr;
};
main ( ){
    struct date d= {02,01,2010}; // 構造体date型の変数dを宣言・初期化
    display(d.day, d.mon, d.yr); // 個々のメンバーを引数として渡す
    getch ( );
}
display(int a, int b, int c){
    printf("day = %d\n", a);
    printf("month = %d\n",b);
    printf("year = %d\n",c);
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

day = 2
month = 1
year = 2010

サンプルプログラム2:学生情報構造体の場合

続いて、文字列配列やfloat型を含む構造体の例を見てみましょう。学生情報を格納する構造体の各メンバーを関数に渡すプログラムです。

#include <stdio.h>
#include <string.h>
struct student{
    int id;
    char name[20];
    float percentage;
    char temp;
};
struct student record; // 構造体のグローバル宣言
int main(){
    record.id=1;
    strcpy(record.name, "Raju");
    record.percentage = 86.5;
    structure_demo(record.id,record.name,record.percentage);
    return 0;
}
void structure_demo(int id,char name[],float percentage){
    printf(" Id is: %d \n", id);
    printf(" Name is: %s \n", name);
    printf(" Percentage is: %.2f \n",percentage);
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

Id is: 1
Name is: Raju
Percentage is: 86.5

まとめ

構造体の個々のメンバーを関数に渡す方法は、必要なデータだけを渡せるためシンプルで直感的です。ただし、メンバー数が多い場合は引数リストが長くなり可読性が下がるため、そのようなケースでは「構造体全体を渡す」か「ポインタでアドレスを渡す」方法を検討するとよいでしょう。

  1. OpenCVとC++を使った色追跡の実装方法:HSV変換から軌跡の描画まで

    色追跡(カラートラッキング)は、色検出とよく似た画像処理です。追跡を実現するには、検出したオブジェクトの面積を計算し、その領域の現在位置を求める処理を数行追加します。最後に、OpenCVのline()関数を使って、オブジェクトが移動した軌跡を線として描画します。 この記事では、トラックバーでHSVのしきい値をリアルタイムに調整しながら、Webカメラの映像から特定色のオブジェクトを検出し、その動きを追跡する方法を解説します。 色追跡の基本的な流れ 映像の取得:VideoCaptureクラスでWebカメラからフレームを取得します。 HSVへの変換:cvtColor()関数でBGR画像をHSV形

  2. ExcelのROUND関数で数値を丸める方法|四捨五入をわかりやすく解説

    Excelで資料を見やすく整えたいとき、数値を小数点以下や整数単位で丸めると、ぐっと読みやすくなります。数値を丸めるということは、重要度の低い桁を取り除くことを意味します。その結果、必要な精度を保ちながら、より見栄えの良い値に仕上げることができます。 丸め処理は、概算を示したり、数値を扱いやすくしたりする目的でよく使われます。たとえば、割引率を計算して「17.3587563」という数値が出た場合、小数第1位で丸めれば「17.4%」となり、はるかに見やすくなります。この記事では、ROUND関数を使って数値を丸める方法を詳しくご紹介します。 ExcelのROUND関数とは ROUND関数は、Ex