Структуры в C

Функция Fgets в C Программирование и разработка

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

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

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

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

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

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

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

struct struct_name
{
/* data */
type member_name;
type member_name2;
type member_name3;


type member_nameN;
};

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

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

struct users
{
char username[20];
char email[225];
char address[50];
int age;
bool registered;
};

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

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

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

struct users
{
char username[20];
char email[225];
char address[50];
int age;
bool registered;
};

int main(int argc, char const *argv[])
{
struct users user1, user2, user3
return 0;
}

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

struct users
{
char username[20];
char email[225];
char address[50];
int age;
bool registered;
} user1, user2, user3;

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

Читайте также:  Возврат массива из функции C++

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

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

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

struct users
{
char username[20];
char email[225];
char address[50];
int age;
bool registered;
};
int main(int argc, char const *argv[])
{
struct users user1 = {«myusername», «zero@user.name», 35, true}
return 0;
}

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

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

struct users
{
char username[20];
char email[225];
char address[50];
int age;
bool registered;
};
int main(int argc, char const *argv[])
{
struct users user1 = {«myusername», «zero@user.name», 35, true}
user1.email = «zero@vuln.io»
return 0;
}

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

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

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

Например:

typedef struct users
{
char username[20];
char email[225];
char address[50];
int age;
bool registered;
} u;
int main(int argc, char const *argv[])
{
u user1 = {«myusername», «zero@user.name», 35, true}
user1.registered = false
return 0;
}

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

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

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

Например:

typedef struct users
{
char username[20];
char email[225];
char address[50];
int age;
bool registered;
} u;
int main(int argc, char const *argv[])
{
u user1 = {«myusername», «zero@user.name», 35, true}

// pointer to another structure
*user_ptr = &user1
user_ptr -> username = «ptrusername»
return 0;
}

Заключение

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

Оцените статью
bestprogrammer.ru
Добавить комментарий