Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по инфе, лучше пересмотреть их!!!!.docx
Скачиваний:
4
Добавлен:
15.04.2019
Размер:
127.67 Кб
Скачать

1. Объявление структуры, обращение к элементам структуры, объявление массива структур.

это не до конца еще, это объявление структуры Как вы уже знаете, переменная в C/C++ объявляется следующим образом: int iMyVariable; В приведенном операторе iMyVariable объявлена как целая переменная. А вот объявление переменной типа char: char cMyChar; Такие типы данных, как int, float, char и long, являются неотъемлемой частью C/C++ и вам не нужно писать никакого кода, чтобы сообщить компилятору о том, что означают эти слова. C/C++ позволяет вам также объ-являть свои собственные, специальные типы данных. В следующем разделе вы узнаете, как объявлять структуры, которые можно отнести к специальным типам данных. Напишите следующий исходный код: #include <iostream.h> #include <string.h> // Объявление структуры. struct MYSTRUCTURE { char sName[100]; int iAge; }; void main( void ) { MYSTRUCTURE MyStructure; strcpy(MyStructure.sName, "Andy" ); MyStructure.iAge = 13; cout << "My name is "; cout << MyStructure.sName; cout << " and I am "; cout << MyStructure.iAge; cout << " years old." << endl; ) В коде, который вы написали, имеются два оператора #include: #include <iostream.h> #include <string.h> Файл iostream.h включен в код, поскольку в main(void) используется cout. Файл string.h включается потому, что в main(void) используется функция strcpy() (объявленная в файле string.h). Затем вы объявляете структуру: Struct MYSTRUCTURE { char sName[100]; int iAge; }; Обратите внимание на синтаксис объявления структуры. Оно начинается с ключевого слова struct, за которым следует имя типа-структуры. В этой программе типу структуры присвоено имя MYSTRUCTURE. Затем следует собственно определение структуры, заключенное в фигурные скобки. Не забудьте поставить точку с запятой после закрывающей фигурной скобки. Теперь посмотрите на код внутри фигурных скобок: char sName[100]; int iAge; Это означает, что MYSTRUCTURE состоит из строки с именем sName и целого с именем iAge, sName и iAge называются элементами данных структуры; Вы объявили их "Внутри" cтруктуры MYSTRUCTURE. Код в main(void) объявляет переменную с именем MyStructure типа MYSTRUCTURE: MYSTRUCTORE MyStructure; Вспомните, что в объявляли переменную iNum1 следующим образом: int iNum1; Когда вы объявляете MyStructure , которая будет структурой типа MYSTRUCTURE, рассматривайте переменную MyStructure аналогично переменной iNum1. MyStructure - это имя переменной, а ее типом является MYSTRUCTURE точно так же, как типом переменной iNum1 является int. (Обратите внимание, что по традиции имя структуры составлено из символов нижнего регистра или в нем смешаны символы нижнего и верхнего регистров, как, например, в имени MyStructure, но в имени типа структуры используются только символы верхнего регистра, как, например, в MYSTRUCTURE.) Следующий оператор в main(void) копирует строку 'Andy' в элемент данных MyStructure.sName: strcpy ( MyStructure.sName, "Andy" ); В этом операторе обращение к элементу данных sName записано как MyStructure.sName Следующий оператор присваивает значение 13 элементу данных iAge cтруктуры MyStructure: MyStructure.iAge - 13; Затем выполняется ряд операторов вывода cout:  cout << "My name is "; cout << MyStructure.sName; cout << " and I am "; cout << MyStructure.iAge; cout << " years old." << endl; Сложив все вместе, мы видим, что программа MyStruct выводит сообщение My name is Andy and I am 13 years old. (Меня зовут Andy и мне 13 лет)

Структуры шаблон структуры Список объявлений переменных, описывающий элементы структуры инициализация структуры Присваивание элементам структуры начальных значений инициализирующая запись Заключенный в фигурные скобки список, элементы которого разделяются запятыми и являются константами операция доступа к элементу структуры операция . Операция языка Си, результат которой — элемент структуры или объединения операция доступа к элементу структуры через указатель операция -> Операция языка Си, результат которой — элемент структуры или объединения операция копирования структур Присваивание значений элементов одной структуры элементам другой структуры того же типа при помощи операции присваивания самоссылающаяся структура Структура, в которой хотя бы один элемент является указателем на структуру того же типа, что и сами структура указатель на неопределенный тип указатель на void Обобщенный указательный тип

тоже к первому.. последнее. Массивы структур Структуры могут быть объединены в массивы структур. Объявление  массива структур делается аналогично объявлению массива переменных. Например,  если нужно хранить информацию о 10 студентах, то объявление массива будет  следующим struct student stud1[10]; Здесь stud1 - имя массива структур, а stud1[0] - это первая  структура, stud1[1] - вторая... stud1[9] - десятая структура. Чтобы получить  доступ к полю age пятой структуры нужно написать  stud1[4].age Чтобы получить доступ к полю kurs первой структуры нужно  написать stud1[0].kurs Пример программы. #include <stdio.h>  // определение  структуры struct student { char name[30]; int kurs; int age; }; void main() { // объявление массива на 10  структур struct student stud[10]; int i, n; printf("Количество студентов:"); // ввод n (число студентов) scanf("%d", &n); for(i=0;i<n;i++) { printf("Введите имя:"); // ввод имени scanf("%s",  stud[i].name); printf("Введите возраст:"); // ввод  возраста scanf("%d", &stud[i].age); printf("Введите номер курса:"); // ввод номера курса scanf("%d", &stud[i].kurs); } // Вывод for(i=0;i<n;i++) { printf("Студент %sn",  stud[i].name); printf("Курс %dn", stud[i].kurs); printf("Возраст %dn", stud[i].age); } }