русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Указатели на структуру


Дата добавления: 2015-06-12; просмотров: 709; Нарушение авторских прав


 

Можно определять указатели на структуру по обычным правилам:

имя_структурного_типа *имя_указателя_на_структуру;

Значением указателя на структуру является адрес структуры указанного типа, т.е. номер байта, начиная с которого структура размещается в памяти.

Например, используя определённый в предыдущем пункте тип и структурную переменную, можно так объявить указатель на структуру: tst*pS;

Инициализацию указателя на структуру можно выполнить одним из следующих способов.

a) Адрес структуры можно определить с помощью операции new. Это можно сделать вместе с объявлением

tst *pS1=new tst;

или раздельно

tst *pS1; pS1=new tst.

b) Можно определить указатель на другую структуру такого же типа pS2 иему присвоить значение адреса одной из ранее определённой структуры (S1, см. 2.1) такого же типа tst. Например,

tst*pS2 =&S1; или tst*pS2; pS2 =&S1;

c) Для инициализации указателя на структуру можно использовать ранее опредлённый указатель на структуру такого же типа:

tst *pS3=pS1; или tst *pS3; pS3=pS1;

d) Можно использовать имя предварительно объявленного статического массива структур:

const n=10; tst ars[n]; tst *pS4=ars; или tst *pS4; pS4=ars;

Для доступа к полям структуры с помощью указателей имеются две возможности.

1) Вместо операции “.” (точка) следует использовать операцию “–>” (стрелка). Она образована из знака “минус” и символа ”больше”, между которыми не должно быть пробелов. Например, pS1–>m=random(9)+2; определяет поле m с помощью датчика случайных чисел; pS1->t=new char[20]; резервирует память для строки. Создание динамического массива внутри структуры выполняется так:

pS1–>ard=new float [pS1–>m];

for (int j=0; j< pS1–>m; j++) cin>>(pS1–>ard[j]);

2) Вторая возможность — это разыменование указателя и формирование уточнённого имени по следующему правилу:



(*имя_указателя).имя_поля.

Например, (*pS).per=25.5; Важна правильная расстановка скобок. Операция разыменование (‘*’) должна относиться к имени указателя, а не к уточнённому имени элемента структуры.

Из двух приведенных возможностей чаще используется первая (см. например, визуальную систему Builder).

Но если в переменной указателе хранится адрес начала массива (pS4), то доступ к полю i – й структуры, т.е. i – го элемента этого массива осуществляется с использованием операции “.”(точка). Это связано с тем, что pS4 — это указатель, а pS4[i]i – я структура, а не адрес. Поэтому правильным будет следующий фрагмент программы:

for (int i=0; i<n;i++)

{ pS4[i].m=random(5)+1;

pS4[i].ard=new float [pS4[i].m];

for (int j=0; j< pS4[i].m; j++)

cin>>( pS4[i].ard[j]);

}

Здесь массив структур pS4 статический, а массив в структуре ard динамический.



<== предыдущая лекция | следующая лекция ==>
Указатели в структуре. | Указатели и вложенные структуры


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.202 сек.