Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Освоение структур в C: определение, переменные, доступ и продвинутые примеры

Освоение структур в C

Научитесь определять, создавать и использовать структуры в C с понятными примерами и лучшими практиками.

Что такое структура в C?

struct (сокращение от structure) — это составной тип данных, группирующий переменные разных типов под единым именем. Это основа для создания сложных структур данных в C.


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

Прежде чем создавать переменные структурного типа, нужно определить сам тип. Ключевое слово struct вводит определение:

struct structureName {
    dataType member1;
    dataType member2;
    … 
};

Пример:

struct Person {
    char name[50];
    int citNo;
    float salary;
};

Это создает новый тип с именем struct Person. Теперь можно объявлять переменные этого типа.


Создание переменных структуры

Определение типа структуры не выделяет память. Для работы с ним объявите переменные:

struct Person {
    // члены
};
int main() {
    struct Person person1, person2, p[20];
    return 0;
}

Альтернативно можно объединить определение и объявление переменных:

struct Person {
    // члены
} person1, person2, p[20];

Доступ к членам структуры

Для доступа к членам используются два оператора:

  1. . — оператор прямого доступа к члену.
  2. -> — оператор доступа через указатель на структуру (рассматривается в отдельном уроке).

Для чтения или изменения salary у person2:

person2.salary

Пример 1: Использование структуры в C

#include <stdio.h>
#include <string.h>
struct Person {
    char name[50];
    int citNo;
    float salary;
} person1;
int main() {
    strcpy(person1.name, "George Orwell");
    person1.citNo = 1984;
    person1.salary = 2500;
    printf("Name: %s\n", person1.name);
    printf("Citizenship No.: %d\n", person1.citNo);
    printf("Salary: %.2f", person1.salary);
    return 0;
}

Вывод

Name: George Orwell
Citizenship No.: 1984
Salary: 2500.00

Обратите внимание: strcpy() копирует строку в массив char фиксированного размера, так как оператор присваивания нельзя использовать напрямую с массивами.


Использование typedef со структурами

Ключевое слово typedef создает псевдоним для типа, упрощая объявления:

typedef struct Distance {
    int feet;
    float inch;
} distances;
int main() {
    distances d1, d2;
}

Без typedef пришлось бы писать:

struct Distance d1, d2;

Пример 2: Псевдоним на практике

#include <stdio.h>
#include <string.h>
typedef struct Person {
    char name[50];
    int citNo;
    float salary;
} person;
int main() {
    person p1;
    strcpy(p1.name, "George Orwell");
    p1.citNo = 1984;
    p1.salary = 2500;
    printf("Name: %s\n", p1.name);
    printf("Citizenship No.: %d\n", p1.citNo);
    printf("Salary: %.2f", p1.salary);
    return 0;
}

Вывод

Name: George Orwell
Citizenship No.: 1984
Salary: 2500.00

Вложенные структуры

Структуры могут содержать другие структуры, позволяя моделировать иерархические данные:

struct complex {
    int imag;
    float real;
};
struct number {
    struct complex comp;
    int integers;
} num1, num2;

Чтобы установить imag у num2 в 11:

num2.comp.imag = 11;

Пример 3: Вложенные структуры в действии

#include <stdio.h>
struct complex {
    int imag;
    float real;
};
struct number {
    struct complex comp;
    int integer;
} num1;
int main() {
    num1.comp.imag = 11;
    num1.comp.real = 5.25;
    num1.integer = 6;
    printf("Imaginary Part: %d\n", num1.comp.imag);
    printf("Real Part: %.2f\n", num1.comp.real);
    printf("Integer: %d", num1.integer);
    return 0;
}

Вывод

Imaginary Part: 11
Real Part: 5.25
Integer: 6

Зачем использовать структуры в C?

Предположим, нужно хранить имя человека, номер гражданства и зарплату. Без структур пришлось бы создавать отдельные переменные для каждого поля для каждого человека, что быстро приводит к дублированию кода и путанице. Структуры инкапсулируют связанные данные в единую логическую единицу, способствуя чистому коду и упрощению сопровождения.


Что дальше?

Язык C

  1. C# Hello World — создание вашего первого C# приложения
  2. Понимание ключевых слов и идентификаторов C#: правила, списки и лучшие практики
  3. Мастерство C# переменных и примитивных типов данных: полное руководство
  4. Операторы C# — исчерпывающее руководство по операторам в C#
  5. Освоение побитовых и сдвиговых операторов в C#: полное руководство
  6. Основы ввода-вывода в C#: Console.WriteLine, ReadLine и форматирование
  7. Выражения, операторы и блоки в C#: подробное руководство с примерами
  8. Освоение комментариев в C#: виды, лучшие практики и XML-документация
  9. Освоение оператора switch в C#: синтаксис, примеры и лучшие практики
  10. Тернарный оператор в C#: краткое руководство по условным выражениям