構造体を使用したプログラムの例

次のプログラムでは、リンク・リストの整数の合計を検出します。

/**
 ** Example program illustrating structures using linked lists
 **/
 
#include <stdio.h>
 
struct record {
                int number;
                struct record *next_num;
              };
 
int main(void)
{
   struct  record name1, name2, name3;
   struct  record *recd_pointer = &name1;
   int sum = 0;
 
   name1.number = 144;
   name2.number = 203;
   name3.number = 488;
 
   name1.next_num = &name2;
   name2.next_num = &name3;
   name3.next_num = NULL;
 
   while (recd_pointer != NULL)
   {
      sum += recd_pointer->number;
      recd_pointer = recd_pointer->next_num;
   }
   printf("Sum = %d¥n", sum);
 
   return(0);
}

構造体型 record には、整数 numbernext_num の 2 つのメンバーが含まれます。これは、record 型の構造変数を指すポインターです。

record 型変数である name1name2、 および name3 に、次の値が割り当てられます。

メンバー名
 name1.number 
144
 name1.next_num 
name2 のアドレス
 
 
 name2.number 
203
 name2.next_num 
name3 のアドレス
 
 
 name3.number 
488
 name3.next_num 
NULL (リンク・リストの終了を指示する)

変数 recd_pointer は、record 型の構造体を指すポインターです。 この変数を name1 のアドレス (リンク・リストの先頭) に初期化します。

while ループによって、recd_pointerNULL になるまで リンク・リストがスキャンされます。ステートメント、

recd_pointer = recd_pointer->next_num;

では、ポインターをリスト内の次のオブジェクトに進めます。

関連参照

IBM Copyright 2003