УКАЗАТЕЛИ НА СТРУКТУРЫ

УКАЗАТЕЛИ НА СТРУКТУРЫ

     Любители указателей будут рады узнать, что указатели можно использовать и для структур. Это хорошо по крайней мере по трем причинам. Во-первых, точно так же как указатели на массивы, они легче в использовании (скажем, в задаче сортировки), чем сами массивы, а указателями на структуры легче пользоваться, чем самими структурами. Во-вторых, структура не может использоваться в качестве аргумента функции, а указатель на структуру может. В-третьих, многие удобные представления данных являются структурами, содержащими указатели к другим структурам.

     Следующий короткий пример (рис. 14.5) показывает, как определять указатель на структуру и как использовать его для получения элементов структуры.

/* указатель на структуру */

#define LEN 20 struct names {

char first [LEN];

char last [LEN]; };

struct guy {

struct names handle;

char favfood [LEN];

char job [LEN];

float income; };

main( ) {

static struct guy fellow [2] = {

    { "Франко", "Уотэл" }

    "баклажан",

    " вязальщик половиков ",

    15435.00},

    {{"Родней", "Свилбели" },

    "лососевый мусс", "декоратор интерьера",

    35000.00 } };

struct guy *him;  /* ЭТО - - указатель па структуру */

printf("адрес #1:  %u  #2 : %u ", &fellow[0],

                                    &fellow[1]);

him = &fellow[0]; /* сообщает указателю, на что ссылаться */

printf("указатель #1: %u   #2: %u ", him, him + 1);

printf("him  -> доход $ %.2f: (*him).доход $ %.2f ",

                            him -> доход, (*him).доход);

him++;    /* указывает на следующую структуру */

printf("him -> favfood is %s : him -> names.last is %s ",

                        him-> favfood, him -> handle.last);}

РИС. 14.5. Программа с использованием указателя на структуру.

Вот, пожалуйста, ее выход:

адрес #1:  12    #2: 96

указатель #1: 12     #2: 96

him -> доход $15435.00: (*him).доход $15435.00

him -> favfood  лососевый мусс: him -> names.last

                                    - Свилбели

Сначала посмотрим, как мы создали указатель на структуру guy. Затем научимся определять отдельные элементы структуры при помощи указателей.