Структуры в C

Structures C



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

Предположим, мы хотим хранить информацию о пользователях, использующих определенный сервис. Такая информация может включать имя пользователя, электронную почту, адрес, режим обслуживания и т. Д. Чтобы сохранить такую ​​информацию, мы можем создать каждый атрибут как отдельную переменную. Однако, когда у нас больше десяти пользователей, код может выйти из-под контроля и стать очень трудным и утомительным для чтения.







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



Давайте посмотрим на различные примеры, чтобы увидеть, как это реализовать.



Как определить структуру на C

Чтобы определить структуру в C, мы используем ключевое слово struct, за которым следует имя структуры. После имени у нас есть пара фигурных скобок, куда мы добавляем элементы.





Рассмотрим синтаксис ниже:

структураstruct_name
{
/* данные */
введите member_name;
введите member_name2;
введите member_name3;

...
типmember_nameN;
};

Имя структуры может быть любым, если оно соответствует соглашению об именах языка программирования C.



Мы можем реализовать пример структуры пользовательской аналогии как:

структурапользователи
{
charимя пользователя[двадцать];
charЭл. адрес[225];
charадрес[пятьдесят];
intвозраст;
bool зарегистрировано;
};

Как создать структурные переменные

Есть два основных способа создания структурных переменных. Первый - объявить их как обычные переменные, а второй - установить их с помощью фигурных скобок.

В приведенном ниже примере показано, как объявить структурные переменные как стандартные переменные C.

структурапользователи
{
charимя пользователя[двадцать];
charЭл. адрес[225];
charадрес[пятьдесят];
intвозраст;
bool зарегистрировано;
};

intглавный(intargc, char const *argv[])
{
структурапользователи user1,user2,user3
возвращение 0;
}

Другой метод создания структурных переменных показан ниже:

структурапользователи
{
charимя пользователя[двадцать];
charЭл. адрес[225];
charадрес[пятьдесят];
intвозраст;
bool зарегистрировано;
}user1,user2,user3;

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

Член структуры Init

Вы не можете инициализировать элементы структуры во время создания, поскольку для этого типа нет выделенной памяти.

Чтобы инициализировать элементы структуры, используйте фигурные скобки, как показано ниже:

структурапользователи
{
charимя пользователя[двадцать];
charЭл. адрес[225];
charадрес[пятьдесят];
intвозраст;
bool зарегистрировано;
};
intглавный(intargc, char const *argv[])
{
структурапользователи user1знак равно {'myusername', '[электронная почта защищена]', 35 год, правда}
возвращение 0;
}

Члены структуры доступа

Чтобы получить доступ к членам структуры, мы используем оператор точки, начиная с имени структуры, точки и имени члена.

структурапользователи
{
charимя пользователя[двадцать];
charЭл. адрес[225];
charадрес[пятьдесят];
intвозраст;
bool зарегистрировано;
};
intглавный(intargc, char const *argv[])
{
структурапользователи user1знак равно {'myusername', '[электронная почта защищена]', 35 год, правда}
user1.Эл. адрес знак равно '[электронная почта защищена]'
возвращение 0;
}

В этом примере мы получаем доступ к членам user1.

Ключевое слово Typedef

Мы используем ключевое слово typedef для создания псевдонима для типов данных, что делает код более читабельным.

Например:

typedef структурапользователи
{
charимя пользователя[двадцать];
charЭл. адрес[225];
charадрес[пятьдесят];
intвозраст;
bool зарегистрировано;
}ты;
intглавный(intargc, char const *argv[])
{
ты пользователь1знак равно {'myusername', '[электронная почта защищена]', 35 год, правда}
user1.зарегистрированный знак равно ложный
возвращение 0;
}

В приведенном выше примере мы создали псевдоним u для структуры пользователей. Следовательно, нам не нужно каждый раз вызывать struct users. Мы можем использовать u, как определено выше.

Указатели структуры

У вас также может быть указатель на структуру. Это позволяет получить доступ к членам с помощью оператора ->.

Например:

typedef структурапользователи
{
charимя пользователя[двадцать];
charЭл. адрес[225];
charадрес[пятьдесят];
intвозраст;
bool зарегистрировано;
}ты;
intглавный(intargc, char const *argv[])
{
ты пользователь1знак равно {'myusername', '[электронная почта защищена]', 35 год, правда}

// указатель на другую структуру
ты*user_ptrзнак равно &user1
user_ptr->имя пользователязнак равно 'ptrusername'
возвращение 0;
}

Заключение

В этом руководстве рассматриваются основы работы со структурами на языке программирования C.

Спасибо за чтение!