Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
c++ / Лекция 6_1.doc
Скачиваний:
101
Добавлен:
02.04.2015
Размер:
83.97 Кб
Скачать

Типы, определяемые пользователем

Структуры в С/C++

Структура – это группа связанных переменных

1. Объявление структуры:

struct mystruct // mystruct – имя ( или дескриптор) структуры

{

int cena;

float ves;

char name[20] ;

}; // ставится в конце знак (;)

  • Имя структуры - спецификатор типа, определяемого пользователем.

  • Описание структуры не создает переменную и не выделяет под нее пямять!

  • Объявление структуры является оператором, поэтому в конце ставится знак “;”

  • Доступ к конкретному элементу структуры осуществляется с помощью операции “.”

2. Использование структуры в программе и доступ к ее членам

mystruct first, second; // создание двух переменных типа mystruct

first.cena=1000;

first.ves=100.5;

strcpy(first.name,"Товар_1");

3. Одновременное объявление структуры и переменных типа структуры

struct mystruct {

int cena;

float ves;

char name[20] ;

} first,second; // создание двух переменных типа mystruct

4. Объявление структуры, если в программе используется только одна структура struct {

int cena;

float ves;

char name[20] ;

}first,second;

Пример структуры:

struct {

AnsiString name;// строка в стиле C++Builder

int x;

}first;

char z[20]; // строка в стиле С – с нулевым байтом на конце

int main()

{

first.name="Иванов";

first.x=20;

strcpy(z, first.name.c_str());// метод с_str() для преобразования в строку в

//стиле С

return 0;

}

5. Общий формат объявления структуры:

struct имя_типа_структуры {

тип имя_элемента1;

тип имя_элемента2;

.

.

.

тип имя_элементаN;

} переменная1, переменная2,...,переменнаяK;

6. Массивы структур

  • Задание массива

mystruct mass[20];

  • Обращение к элементу массива

mass[2].cena=100; // обращение к 3-ему элементу массива;

// индексация элементов массива начинается с 0

  • Одновременное объявление структуры и массива типа структуры

const int size=20; // задание константы

struct mystruct {

int cena;

float ves;

char name[20] ;

} mass[size]; // создание массива

7. Присваивание структур

Содержимое одной структуры можно присвоить другой, если обе эти структуры имеют одинаковый тип

Правильное присвоение

Неправильное присвоение

struct my{

int a,b;

}s1,s2;

int main()

{

s1.a=s1.b=10;

s2.a=s2.b=20;

s2=s1;

return 0;

}

struct my1{

int a,b;

}s1;

struct my2{

int a,b;

}s2;

int main()

{

s1.a=s1.b=10;

s2.a=s2.b=20;

s2=s1; // ошибка компиляции

return 0;

}

Две структуры физически одинаковы, но имеют разные имена типов

8. Использование указателей на структуры и операции -> (стрелка).

struct mystruct {

int cena;

float ves;

char name[20] ;

} first; // определение структурной переменной, память выделяется при

//компиляции

mystruct *p; // объявление указателя на структуру

p=&first;// указателю p присваивается адрес структурной переменной first

p->cena=100;// доступ к члену структуры через указатель

// аналогично (*p).cena=100;

p=new mystruct;// динамическое выделение памяти под указатель

p->cena=200;

delete p; // удаление динамической переменной-указателя

Для получения доступа к членам структуры используется операция “.”

Для получения доступа к членам структуры через указатель используется операция “->”

Соседние файлы в папке c++