次の記述は、構造の配列を関数の引数に渡して表示する例です。
#include <stdio.h>
#define MASTERMAX 5 /* master配列の最大要素数 */
#define STRMAX 10 /* 文字列用配列要素数 */
struct data_t {
char name[STRMAX];
int idata;
};
/* 変更入力 */
void change_data(struct data_t *a) /* struct data_t a[] と仮引数を宣言しても同じ*/
{
int i = 0;
for(i=0; i < MASTERMAX; i++){
printf("%s の変更入力>" , a[i].name); /* (a+i)->name と表現しても同じ */
gets(a[i].name); /* (a+i)->name と表現しても同じ */
printf("\t%d点の変更入力>" , a[i].idata); /* (a+i)->idata と表現しても同じ */
scanf("%d", & a[i].idata); /* &(a+i)->idata と表現しても同じ */
fflush(stdin);
}
}
/* 表示 */
void display_data(struct data_t *a)/* struct data_t a[] と仮引数を宣言しても同じ*/
{
int i = 0;
for(i=0; i < MASTERMAX; i++){
printf("%s 点数:%d\n", a[i].name , a[i].idata);
}
}
main()
{
struct data_t master[MASTERMAX] = { { "suzuki" , 60 } , { "yamada" , 85 } } ;
change_data(master);/* 変更入力 */
display_data(master); /* 表示 */
}
実行例
suzuki の変更入力>satou
60点の変更入力>70
yamada の変更入力>tanaka
85点の変更入力>75
の変更入力>sasaki
0点の変更入力>80
の変更入力>suzuki
0点の変更入力>60
の変更入力>yamada
0点の変更入力>85
satou 点数:70
tanaka 点数:75
sasaki 点数:80
suzuki 点数:60
yamada 点数:85