4 構造体のポインター

構造体のポインターも,通常の変数と同じように使うことができる.その例をリスト 4に示す.この例では,構造体のポインターをユーザー定義関数ととも に用いている.以下,その方法を示すが,アロー演算子の他は通常の変数と同じ取り扱い である.
   1 #include <stdio.h>
   2 #include <string.h>             // strcpy を使うため
   3 
   4 typedef struct{                 // 構造体型 student の定義
   5   char name[80];
   6   int math;
   7   int eng;
   8 } student;
   9 
  10 student *better(student *st1, student *st2);    //プロトタイプ宣言
  11 
  12 //=========================================================
  13 // メイン関数
  14 //=========================================================
  15 int main(void)
  16 {
  17   student shimada, yamamoto, *yoi;
  18 
  19   strcpy(shimada.name,"shimada masaharu");
  20   shimada.math = 92;
  21   shimada.eng = 88;
  22   strcpy(yamamoto.name,"yamamoto masao");
  23   yamamoto.math = 42;
  24   yamamoto.eng = 61;
  25   
  26   yoi = better(&shimada, &yamamoto);       // アドレスを送る
  27 
  28   printf("平均点が高い方は,%sです.\n",yoi->name);
  29   
  30   return 0;
  31 }
  32 
  33 //=========================================================
  34 // 平均点を計算するユーザー定義関数
  35 //=========================================================
  36 student *better(student *st1, student *st2)
  37 {
  38   int av1, av2;
  39   
  40   av1 = (st1->math + st1->eng)/2;         // アロー演算子を使い
  41   av2 = (st2->math + st2->eng)/2;         // メンバーにアクセス
  42 
  43   if(av1<av2){
  44     return st2;
  45   }else{
  46     return st1;
  47   }
  48 
  49 }


\fbox{実行結果}
平均点が高い方は,shimada masaharuです.



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年4月17日


no counter