Объявление переменных типа СТРУКТУРА. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Объявление переменных типа СТРУКТУРА.



Для того чтобы объявить конкретные переменные типа struct student, можно написать

struct student studl, stud2;

Теперь объявлены две переменные - studl и stud2. Компилятор автоматически выделит под них место в памяти компьютера. Под каждую из переменных типа структуры выделяется непрерывный участок памяти.

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

struct student {

char name[30];

char kurs;

char group[3];

int stip;

} studl, stud2;

Здесь одновременно задается структура с именем student и объявляются переменные studl и stud2.

 

Обращение к элементу структуры.

Доступ к конкретному элементу структуры осуществляется с помощью операции "точка". Например,

strcpy(studl.name, "Иванов М. С.");

В этом примере копируется строка "Иванов М. С." в поле name переменной stud1.

Если мы хотим напечатать содержимое третьего поля переменной studl структуры student, мы должны написать

printf("%s", stud2.group);

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

Структуры могут объединяться в мас­сивы структур. Чтобы объявить массив структур, надо сначала задать шаб­лон структуры (у нас уже есть шаблон student), а затем объявить массив:

 

struct student studlkurs[200];

 

Этот оператор создаст в памяти 200 переменных типа структуры с шаб­лоном студент и именами studlkurs[0], studlkurs[l] и т. д.

 

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

1)Для доступа к полю kurs 25-го элемента массива используем

studlkurs[24].kurs

2)Если же мы хотим взять 5-й элемент поля name переменной studl, необ­ходимо написать:

studlkurs.name[4]

3)Если объявлены две переменные типа структуры с одним шаблоном, можно сделать присваивание

studlkurs = stud2;

при этом произойдет побитовое копирование каждого поля одной пе­ременной в соответствующее поле другой структуры.

В то же время нельзя использовать операцию присваивания переменных типа структуры, шаблоны которых описаны под разными именами, пусть даже совсем идентично:

// Пример.

//пример неправильный

void main(void)

{

struct first { int a; char b;

};

struct second { int a; char b;

};

Struct first str1;

struct second str2;

str1.a = 1;

str2.b =’f’;

str1.a = str2.a; /* правильное присваивание */

str1 = str2;   /* неправильное присваивание */

return 0;

}

Указатель на структуру.

Можно создать указатель на структуру:

struct stru *adr_pointer;

 

adr_pointer - переменная типа указатель на структуру struct stru.

Если мы передаем структуру по значению, то все элементы структуры заносятся в стек. Если структура простая и содержит мало элементов, то это не так страшно. Если же структура в качестве своего элемента содержит массив, то стек может переполниться.

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

 

struct complex { float x; float у:

} cl, c2;

struct complex *a; /* объявление указателя */

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

. Получить значение элемента х переменной с1 можно так:

(*а).х;

Использование указателей на структуру встречается часто. Поэтому, кроме способа получить значение элемента а структуры, используя (*а).х, есть еще один. В языке С вводится специальная операция -> (стрелка).

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

Т.е. вместо (*а).х мы можем использовать а -> х.

Этот способ обычно и применяется.

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

Пусть объявления переменных имеют вид

struct addr

{ char city[30];

char street [30];

int house;

};

 

struct fulladdr

{ struct addr addres;

int room;

char name [30];

} f, g;

 

Здесь addr - шаблон структуры, определенный перед объявлением струк­туры fulladdr и объявлением переменной f типа структуры fulladdr. Для присвоения значения элементу house структуры addres переменной f ис­пользуем

a.addres.house=101;

 

Пример 1.

#include <dos.h>

#include <stdio.h>

#include <conio.h>

void main()

{/* структура шаблона для чтения системной даты

struct date {

int da_year;

char da_day;

char da_mon;    

};

*/

 struct date Today;/*объявление структурной переменной Today*/

 getdate(&Today); /* чтение системной даты в переменную Today*/

 clrscr();

 /* вывод на экран названия месяца*/

 printf("%d %d %d",Today.da_day,Today.da_mon,Today.da_year);

 getch();

}

 

Пример 2.

#include <dos.h>

#include <stdio.h>

#include <conio.h>

void main()

{ /* шаблон для чтения системного времени:

struct time {

unsigned char ti_min; /* минуты */

unsigned char ti_hour; /* часы */

unsigned char ti_hund; /* секунды */

unsigned char ti_sec; /* секунды */

}; */

 

 struct time Now; /* объявление структурной переменной*/

 

 while (!kbhit())

{ gettime(&Now);

//  clrscr();

  gotoxy(40,10);

  printf("%s"," "); /* очистка части экрана*/

  gotoxy(40,10);

  printf("%d",Now.ti_sec); /* вывод секунд */

}

 getch();

}


1 Введение. 1

1.1  Языки программирования. 1

1.2  Этапы создания программы.. 2

1.3  Классификация языков программирования. 2

2 Программирование линейных алгоритмов. 3

2.1  Структура программы. 3

2.2  Директивы препроцессора. 3

2.2.1   Включение в текст программы внешнего файла.. 3

2.2.2   Включить определение... 4

2.3  Идентификаторы. 5

2.4  Константы. 5

2.5  Типы данных. 6

2.5.1   Операторы объявления типа данных. 6

2.5.2   Инициализация переменных. 6

2.6  Функции ввода/вывода. 7

2.6.1   Функция вывода. 7

2.6.2   Спецификации преобразования. 7

2.6.3   Ввод данных. 8

2.7  Арифметические операции. 8

2.8  Примеры составления линейных программ. 10

2.9  Операции поразрядной арифметики. 11

2.10 Логические операции. 12

2.11 Библиотечные функции. 13

3 Программирование разветвляющихся алгоритмов. 14

3.1  Понятие разветвляющихся алгоритмов. 14

3.2  Условный оператор. 15

3.2.1   Форматы оператора. 15

3.2.2   Сокращённый условный оператор. 15

3.2.3   Вложенная конструкция if. 15

3.2.4   Многоуровневые вложения. 16

3.2.5   Примеры записи логических выражений, истинных при выполнении указанных условий. 16

3.2.6   Условия в графике. 17

3.2.7   Использование операции | (ИЛИ). 18

3.3  Оператор-переключатель. 18

4 Программирование циклических алгоритмов. 21

4.1  Организация циклов. 21

4.2  Оператор цикла while. 21

4.3  Оператор цикла do-while. 21

4.4  Оператор цикла for. 23

4.5  Вспомогательные операторы. 24

4.5.1   Операторы коррекции порядка выполнения операторов switch, while, do или for. 24

4.5.2   Оператор перехода goto. 25

4.5.3   Оператор возврата return. 25

5 Массивы. 26

5.1  Описание массива. 26

5.2  Одномерные и многомерные массивы. 27

5.2.1   Количество индексов массива. 27

5.2.2   Операция образования массива [ ]. 28

5.3  Ввод-вывод массивов. 29

5.4  Инициализация массивов. 32

5.5  Примеры программ с использованием матриц. 33

Ø Транспонирование матрицы.. 33

Ø Удаление столбца. 33

5.6  Методы сортировки. 33

5.6.1   Сортировки методом простого выбора. 34

5.6.2   Сортировки методом простого обмена. 36

5.6.3   Сортировки методом простых вставок (метод прямого включения). 39

6 Функции. 42

6.1  Определение функции. 42

6.2  Описание функции. 43

6.3  Вызов функции. 44

6.4  Локальные и глобальные переменные. 45

6.5  Обмен данными между функциями. 45

6.5.1   Возвращаемое значение. 45

6.5.2   Параметры функции. 46

6.6  Библиотечные функции. 50

7 Указатели. 51

7.1  Адресные операции. 51

7.2  Инициализация указателей. 53

7.3  Использование указателей. 53

8 Символьная информация и строки. 56

8.1  Описание символьных строк. 56

8.2  Ввод-вывод символьных данных. 57

8.3  Функции работы со строками. 61

9 Файлы. 66

9.1  Понятие файла. 66

9.2  Текстовые и бинарные файлы. 66

9.3  Работа с файлами средствами библиотеки языка СИ. 66

9.3.1   Открытие и закрытие файла. 66

9.3.2   Чтение/запись в файл. 67

10   Структура. 68

10.1 Определение структуры. 68

10.2 Объявление переменных типа СТРУКТУРА. 68

10.3 Обращение к элементу структуры. 68

10.4 Массивы структур. 69

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

10.6 Указатель на структуру. 69

 



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 79; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.187.24 (0.026 с.)