【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
まとめ
構造体の個々のメンバーを関数に渡す方法は、必要なデータだけを渡せるためシンプルで直感的です。ただし、メンバー数が多い場合は引数リストが長くなり可読性が下がるため、そのようなケースでは「構造体全体を渡す」か「ポインタでアドレスを渡す」方法を検討するとよいでしょう。
-
OpenCVとC++を使った色追跡の実装方法:HSV変換から軌跡の描画まで
色追跡(カラートラッキング)は、色検出とよく似た画像処理です。追跡を実現するには、検出したオブジェクトの面積を計算し、その領域の現在位置を求める処理を数行追加します。最後に、OpenCVのline()関数を使って、オブジェクトが移動した軌跡を線として描画します。 この記事では、トラックバーでHSVのしきい値をリアルタイムに調整しながら、Webカメラの映像から特定色のオブジェクトを検出し、その動きを追跡する方法を解説します。 色追跡の基本的な流れ 映像の取得:VideoCaptureクラスでWebカメラからフレームを取得します。 HSVへの変換:cvtColor()関数でBGR画像をHSV形
-
ExcelのROUND関数で数値を丸める方法|四捨五入をわかりやすく解説
Excelで資料を見やすく整えたいとき、数値を小数点以下や整数単位で丸めると、ぐっと読みやすくなります。数値を丸めるということは、重要度の低い桁を取り除くことを意味します。その結果、必要な精度を保ちながら、より見栄えの良い値に仕上げることができます。 丸め処理は、概算を示したり、数値を扱いやすくしたりする目的でよく使われます。たとえば、割引率を計算して「17.3587563」という数値が出た場合、小数第1位で丸めれば「17.4%」となり、はるかに見やすくなります。この記事では、ROUND関数を使って数値を丸める方法を詳しくご紹介します。 ExcelのROUND関数とは ROUND関数は、Ex