Домашняя страница библиотеки_c AVR

Синтаксис языка C

Библиотека языка C GNU glibc

 Страницы развития библиотеки_с AVR

Главная страница

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

Содержание библиотеки_c

Часто задаваемые вопросы

Содержание по алфавиту

Демонстрационные проекты


Структуры

Структура — это особый тип данных, состоящий из нескольких разнотипных переменных (полей). В общем случае объявление структуры имеет следующий вид:

struct  имя_структуры  

{

тип  поле_1;

тип  поле_N;

};

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

struct  MyStructure   //Объявление   структуры MyStructure

{  

int   Fieldl;

char   Field2;

float   Field3;

};

struct MyStructure YourStruct, OurStruct; //Объявление переменныхYourStruct и OurStruct типа MyStructure

Допускается инициализация полей непосредственно при объявлении пере­менных-структур с помощью перечня значений в фигурных скобках, например:

struct DATE

{

int Day;

int Month;

int Year;

}

struct DATE MyBirthday = {7, 8, 1974};

Для доступа к полям структуры в программе используют запись вида имя_структуры.поле. То есть, в представленном выше примере структуры DATE для инициализации полей можно было воспользоваться следующими оператора­ми:

MyBirthday.Day = 7;

MyBirthday.Month = 8;

MyBirthday.Year = 1974;

Структуры, в свою очередь, могут быть полями других структур, например:

struct   ME  

{

char MyName[30];      //Строка длиной 30 символов - имя

struct DATE MyBirthday;        //Структура, хранящая день рождения

}

struct ME MyData;

MyData.MyName = "John Smith";

MyData.MyBirthday.Day = 7;

MyData.MyBirthday.Month = 8;

MyData.MyBirthday.Year =1974;

Структуры могут выступать в качестве параметров функций, а также возвра­щаемого результата. Ниже представлен пример функции, возвращающей структу­ру типа DATE:

struct DATE Januaryl(int CurYear)

{

struct DATE Jan0l;

Jan0l. Day = 1;   

Jan0l.Month = 1;

Jan0l.Year = CurYear;

return JanOl;

}

struct DATE BeginOfTheYear;

BeginOfTheYear = Januaryl(2006);

 

Hosted by uCoz