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

Указатель на структуру объявляется точно так же, как и указатель на данные простых типов: используется операция '*' и указывается тип данных. Тип данных структуры указывается заданием ключевого слова struct и имени шаблона этой структуры.

Синтаксис:

ИмяСтруктурногоТипа *ИмяУказателяНаСтруктуру

Например:

struct goods *p_goods;

struct student *p_stu1, *p_stu2;

Указатели на структуры могут вводиться и для безымянных (не имеющих имен) структурных типов.

Например:

struct {

char *name;

int age;

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

Если структура объявлена с помощью typedef, то при определении указателей название этого типа может использоваться без служебного слова struct.

Например:

complex *cc, *ss, comp;

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

Например:

struct particle {

double mass;

float coord[3];

} dot[3], point, *pinega;

 

//Инициализация указателей

struct particle *p_d=&dot[1], *pinta=&point;

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

Например:

pinega=&dot[0];

При определении элемента структуры запрещено указание в качестве элемента самого себя (через структурный объект).

Например:

struct STUD { //некорректное объявление поля структуры

STUD t;

} a, b;

Однако элемент структуры может быть указателем на определяемую структуру.

Например:

struct STUD { //корректное объявление поля структуры

STUD *pt;

} a, b;

Кроме того, допустимо неполное определение типа структуры, если ее указатель является элементом другой структуры.

Например:

struct A; //неполное определение структурного типа

struct B {struct A *pta;};

struct A {struct B *ptb;};

При определении структурных типов может потребоваться организация взаимных перекрестных связей между структурами двух и более разных типов. В этом случае помогает применение указателей на структуры.

Например:

struct part {

double modul;

struct cell *element_cell;

struct part *element_part;

};

struct cell {

long summa;

struct cell *one;

struct part *two;

};

 








Дата добавления: 2015-02-16; просмотров: 516;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.