### Examples of Structure Declaration and Use

The following program finds the sum of the integer numbers in a linked list:

>     /**
>      ** 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);
>     }

The structure type `record` contains two members: the integer `number` and `next_num`, which is a pointer to a structure variable of type `record`.

The `record` type variables `name1`, `name2`, and `name3` are assigned the following values:

  Member | Value
  `name1.number` | `144`
  `name1.next_num` | address of `name2`
  `name2.number` | `203`
  `name2.next_num` | address of `name3`
  `name3.number` | `488`
  `name3.next_num` | `NULL` (indicating the end of the linked list)

The variable `recd_pointer` is a pointer to a structure of type `record`. It is initialized to the address of `name1` (the beginning of the linked list).

The while loop causes the linked list to be scanned until `recd_pointer` equals `NULL`. The statement:

>     recd_pointer = recd_pointer->next_num;

advances the pointer to the next object in the list.

The following example shows how to define and initialize a structure within a structure.

>     struct client {
>                   char *name;
>                   struct info {
>                                   int age;
>                                   int weight;
>                               } pers_info;
>              } child = { "Bob", { 3, 31 } }; /* initialization */

struct (Structure) Type