Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
язык Си.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
101.56 Кб
Скачать

Структуры в языке с

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

Давайте представим телефонный справочник в виде структуры, то есть в структуре должна храниться вся необходимая информацию о каждом человеке — имя, адрес, номер телефона, и так далее. Синтаксис объявления структуры:

1

2

3

struct /*имя структуры*/ {

  /*переменные-члены структуры*/

};

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

struct home {

  int rooms;

};

struct home home1; // объявляем структуру как обычную переменную, просто вначале дописываем слово struct

 

home1.rooms = 4;          //вот так получаем доступ к переменной

Тут все предельно ясно. Давайте рассмотрим еще один пример программы:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

struct database {

  int rowId;

  int name;

  float surname;

};

 

int main()

{

  struct database worker;  // объявили переменную-структуру

 

  worker.rowId = 1;

  worker.name = Denis;

  worker.surname = Sukhoverkhov;

}

Структура с именем database имеет три переменные, rowId, name, surname. Структуру database можно использовать как тип данных для переменной, пример показан в строке 9. Мы создали переменную worker типа database. И теперь, через переменную worker мы можем получить доступ к элементам структуры. Мы можем задать номер строки, имя и фамилию. Доступ к элементам структуры осуществляется через точку. То есть, чтобы поменять значение структуры или считать его, достаточно указать имя перемененной и через точку — элемент структуры. Вы также можете вернуть структуру в качестве возвращаемого значения функции, для этого нужно определить тип возвращаемого значения функции в качестве структурного типа. Например:

1

struct database functionName();

Немного подниму тему объединений — union, по сути это все та же структура, за исключением того, что все переменные занимают один и тот же объем памяти. Когда в программе объявляется union, компилятор выделяет достаточно памяти для крупнейшего типа данных в объединении. Это как огромное хранилище, в котором есть одна большая запись, все остальные — маленькие, и этим маленьким записям никогда не понадобится в полном объеме то место, которое им отводится. Оператор точка "." также используется и для доступа к элементам объединения — union. В качестве последнего замечания, хочу отметить такой момент, если вы работаете со структурой через указатель, то в качестве оператора доступа к элементам структуры нужно использовать оператор ->, вместо оператора ".". Все остальное остается актуальным и для указателей.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#include <stdio.h>

 

struct instance {

  int var;

};

 

int main()

    struct instance instance1;

    struct instance *ptrStruct;

 

    instance1.var = 12;

    ptrStruct = &instance1; // указатель на структуру

 

    printf( "%d\n", ptrStruct->var );  // работает как оператор разименования - *

    getchar();

}

Вот результат работы программы:

CppStudio.com

12

Если у вас возникнут какие-то вопросы, задавайте их в комментариях или на форуме.

#

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]