46241

Структуры. Действия со структурами. Передача структур в функции

Доклад

Информатика, кибернетика и программирование

Объявление структуры следует рассматривать как объявление типа. В C структуры заключают в себе не только данные но и код и относятся к средствам объектноориентированного программирования. Объявление структуры которая хранит сведения о журнале: название год номер.mgzinmg = { Nture 3 1995;Доступ к элементам структуры осуществляется по составному имени:имя_структуры.

Русский

2013-11-20

14.1 KB

4 чел.

3.Структуры. Действия со структурами. Передача структур в функции.

Структура — это составной тип данных, который состоит из элементов разных типов. Объявление структуры следует рассматривать как объявление типа.

Замечание. В C++ структуры заключают в себе не только данные, но и код и относятся к средствам объектно-ориентированного программирования. В данном разделе объектные свойства структур не рассматриваются.

Пример. Объявление структуры, которая хранит сведения о журнале: название, год, номер.

structmagazin

char* tittle;
intyear;
intnumber;
};

Ниже определена и инициализирована переменная структура mag.
magazinmag = {"Nature", 3, 1995);

Доступ к элементам структуры осуществляется по составному имени:
имя_структуры.имя_элемента.

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

Если есть указатель на структуру, то доступ к элементу возмо¬жен при помощи операции косвенного выбора:
указатель_на_структуру->имя_элемента.

Стрелка, составленная из двух символов, обозначает оператор косвенного выбора.
Структуры можно присваивать, передавать в виде параметров функции, возвращать в виде результата функции. Структуры нельзя сравнивать операциями ==, /=, < ,> и т.п. Структуры, как и массивы, можно инициализировать списком значений.

Пример. Работа со структурой magazin.

// объявления и инициализация
magazin *pm, m = ("Nature", 2000, 4};
// доступ к элементам
cout « m.tittle « " " « m.number « endl;
// одна структура в свободной памяти
*pm = newmagazin;
*pm = m;
pm->tittle = "Nature";
deletepm;

// массив структур в свободной памяти 
pm = newmagazin[10];
pm[0].tittle = "Природа";
delete[] pm; 

Передача структур в функцию

Когда структура используется как аргумент функции, передается вся структура с помощью стандартной передачи по значению. Это означает, что любые изменения, внесенные в содержимое структуры внутри функции, не повлияют на структуру, используемую в качестве аргумента.

Когда структура используется как параметр, самое важное - это запомнить, что тип аргумента должен соответствовать типу параметра. Лучший способ сделать это - определить структуру глобально, а затем использовать ее ярлык для объявления необходимых структурных переменных и параметров. Например:

#include<stdio.h>

/* объявление типа структуры */
structstruct_type {
int a, b;
charch;
};

void f1(structstruct_typeparm);

intmain(void)
{
structstruct_typearg;    /* объявление arg */
arg.a = 1000;
f1(arg);
return 0;
}

void f1(structstruct_typeparm) {
printf("%d", parm.a);
}

Данная программа выводит число 1000 на экран. Можно видеть, что как arg, так и parm объявлены как структуры типа struct_type.


 

А также другие работы, которые могут Вас заинтересовать

76753. Ребра и грудина. Грудная клетка в целом 184.3 KB
  На позвоночном конце ребра находятся: головка с гребнем у IIX ребер и верхней нижней суставными поверхностями покрытыми гиалиновым хрящом у I XI и XII ребер гребень отсутствует; шейка переходящая углом в тело; на переходе бугорок на 10 верхних ребрах с двумя возвышениями: медиальнонижнее имеет суставную ямку для сочленения с поперечным отростком позвонка к другому возвышению прикрепляется связка; последние два ребра бугорка не имеют у первого ребра бугорок совпадает с вершиной угла. Тело ребра изогнутое у позвоночного конца...
76754. Развитие черепа в онтогенезе 191.91 KB
  Кости лицевого черепа развиваются на основе висцеральных дуг которых закладывается 5 пар а между ними 5 пар висцеральных карманов старое название жаберные дуги и жаберные карманы. Висцеральные дуги для лицевого черепа. Ядра точки окостенения подразделяются на: первичные 4150 появляющиеся во внутриутробном периоде в костях мозгового черепа их больше всего начало появления 78 недели к рождению они образуют 20 крупных очагов оссификации; вторичные появляющиеся после рождения; в больших костях черепа их мало но между костями в...
76755. Варианты и аномалии костей черепа 181.64 KB
  Теменные кости выраженность теменных бугров особенно у женщин; появление межтеменной кости. Затылочная кость наличие поперечного шва отделяющего верхнюю часть чешуи и образование вставочной дополнительной кости; присутствие более мелких добавочных костей часто расположенных в швах кости швов; значительная выраженность затылочных выступов; уплощение чешуи слабая выраженность борозд или наоборот увеличение изогнутости чешуи и углубление борозд; разнообразные формы большого отверстия костных валиков вокруг внутреннего его края;...
76756. Первая и вторая висцеральные дуги 187.99 KB
  Развитие лицевого (висцерального) черепа определяется мозгом и краниальным (глоточным) отделом первичной кишки, в котором на боковых стенках между висцеральными (жаберными) карманами появляются хрящевые висцеральные (жаберные) дуги, но особое значение для черепа имеют первые две.
76757. Кости лицевого черепа. Глазница 192.12 KB
  Подвисочная поверхность находится сзади тела образуя стенку подвисочной и крылонебной ямок состоит: из бугра верхней челюсти с задними альвеолярными отверстиями для одноименных нервов и сосудов. Глазничная поверхность занимает на теле кости верхнее положение участвуя в образовании нижней стенки глазницы. Носовая поверхность образует латеральную стенку полости носа. Небный отросток носовой гребень по медиальному краю; передняя носовая ость: окончание носового гребня впереди; верхняя носовая поверхность; нижняя небная поверхность...
76758. Височная кость 184.9 KB
  У верхушки пирамиды внутреннее отверстие сонного канала. На передней поверхности пирамиды находятся: каменисточешуйчатая щель хрящевая ростковая зона и отверстие мышечнотрубного канала; дугообразное возвышение от полукружных костных каналов лабиринта; крыша барабанной полости от среднего уха; тройничное вдавление на вершине пирамиды для одноименного нервного узла; расщелины и борозды большого и малого каменистого нервов. На задней поверхности пирамиды располагаются: внутреннее слуховое отверстие и внутренний слуховой проход для YII...
76759. Клиновидная кость 180.73 KB
  Клиновидная кость воздухоносная состоит из тела малых и больших крыльев и крыловидных отростков. На верхней поверхности тела находится турецкое седло а в нем: гипофизарная ямка для гипофиза центральной нейроэндокринной железы; бугорок седла кпереди от ямки; спинка седла с задними наклоненными отростками кзади от ямки; сонные борозды: правая и левая с клиновидными язычками лежат по боковым поверхностям седла предназначены для внутренней сонной артерии и внутреннего сонного симпатического нерва венозного пещеристого синуса. На...
76760. Крылонёбная ямка 181.89 KB
  Ямка соседствует и имеет связи с височной и подвисочной ямами. По форме ямка узкая щель ограниченная тремя выше перечисленными костями она граничит и сообщается с полостью черепа средней черепной ямой полостями носа и рта глазницей височной и подвисочной ямами. Крылонебная ямка сообщается: с полостью рта через большой и малый небные каналы с одноименными сосудами и нервами которые снабжают твердое и мягкое небо и небные миндалины; с полостью носа через клиновиднонебное отверстие с одноименными сосудами и нервами для слизистой...
76761. Полость носа 181.99 KB
  Полость носа обладает верхней нижней и парными боковыми стенками. Верхняя стенка состоит из: носовой части лобной кости продырявленной пластинки решетчатой кости и тела клиновидной которые составляют верхнезаднюю часть стенки; парных носовых костей: право и левой образующих передневерхнюю часть стенки. Нижняя стенка включает: небные отростки верхних челюстей и горизонтальные пластинки небных костей костное небо; носовой гребень который проходит по середине стенки в продольном направлении. Латеральные стенки правая и левая...