Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Инициализация массива структур при помощи указателя р



gets((*p).title); /* Ввод названия книги.*/
gets ((*р).author); /* Ввод имени автора.*/
(*р).value=123; /* Ввод цены книги.*/
gets(p —> title); /* Ввод названия книги.*/
gets(p —> author); /* Ввод имени автора.*/
p —> value=150; /* Ввод цены книги.*/

Указатель р содержит адрес начала массива— адрес нулевого элемента массива структур типа book. Используя р, можно осуществить доступ к каждому полю структуры типа book. Чтобы осуществить доступ к другим структурам, необходимо изменить адрес, хранящийся в р. Сдвиг указателя на / элементов массива осуществляется следующим образом:

p=p + i;.

Графическое представление массива структур в памяти ЭВМ показано на рис. 1.12.

Динамическое распределение памяти под массив структур. Динамически распределять память под массив структур необходимо в том случае, когда заранее не известен размер массива.


           
   
   
 

float value
chartitle[15]

Адрес начала массива


Название Имя Цена книги автора книги

Z

/------------------

char author[15]


" libry[0]



p + 1


char title[15]


char author[15]


T


float value


" libry [1]



P + 2


chartitle[15]


char author[15]


Z


float value



bry[2]



p + i


chartitle[15]


z

char auth or[15]


Z


float value


libry [i]



p + 99/

chartitle[15]

Последний элемент массива структур


I

char atithor[15]


Z


float value


7\


libry [99]


Рис. 1.12. Массив структур

Пример


#include <stdio.h> #include <alloc.h> struct book

{

char title [30]; char author [30]; float value;

}; main ()

{

struct book *p; int n;


/*n - число структур book*/



printf("\пВведите n:");





Дата публикования: 2014-11-04; Прочитано: 257 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...