Главная страница » Что такое структура в чем ее отличие от массива

Что такое структура в чем ее отличие от массива

  • автор:

Что такое структура в чем ее отличие от массива

Видео: Структуры в C++ | struct C++. Разница между структурой и классом. Изучение С++ для начинающих.#129

Содержание

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

C — это язык программирования общего назначения высокого уровня, разработанный Деннисом Ритчи в Bell Labs. Это базовый язык для большинства современных языков программирования, таких как C ++, Java, Python и PHP. Операционные системы, встроенные системы, сетевые драйверы, базы данных и т. Д. — это некоторые приложения, которые мы можем разработать с использованием языка Си. Массив и структура — две основные концепции программирования на языке Си. В целом, элементы в массиве имеют одинаковый тип данных, тогда как элементы в структуре имеют разные типы данных.

Ключевые области покрыты

1. Что такое массив в программировании на С
— определение, функциональность
2. Что такое структура в C-программировании?
— определение, функциональность
3. В чем разница между массивом и структурой в C-программировании
не следует — Сравнение основных различий

Основные условия

Массив, Структура, C, C ++

Что такое массив в программировании на С

Массив — это структура данных, которая может хранить элементы, принадлежащие к одному типу данных. Программист должен объявить количество элементов, которое должен хранить массив. Следовательно, массив имеет фиксированную длину. Рассмотрим следующее в качестве примера.

При этом массив не может хранить более 10 элементов. Первый элемент массива начинается с нулевого индекса. Индекс последнего элемента равен 9. Кроме того, все элементы хранятся в непрерывной ячейке памяти. Следовательно, выделение памяти для массива является статическим.

Рисунок 1: программа на C с массивами

Выше приведена простая программа с C. Значки — это массив. Он может хранить пять целочисленных значений. Программист инициализирует массив пятью отметками. Цикл for помогает перебирать массив. Переменная «i» начинается с 0 и увеличивается до 4. Она последовательно печатает метки в массиве. Первый элемент 75, а последний элемент 66.

Что такое структура в C-программировании?

Структура — это отдельная переменная, которая может содержать данные, принадлежащие к разным типам данных. Другими словами, это набор переменных с разными типами данных. Пример таков.

Рисунок 2: C программа со структурой

В вышеуказанной программе студент — это структура. Он содержит два свойства: id (int) и name (char). В основном методе s1 является переменной типа структуры. В строке 13 число 1 присваивается идентификатору свойства структуры. Функция strcpy позволяет копировать строку «Ann» в свойство name структуры. Программист может получить доступ к свойствам структуры с помощью оператора доступа (.). Наконец, функция printf отображает идентификатор и имя на консоли.

Разница между массивом и структурой в программировании на C

Определение

Массив — это структура данных, состоящая из набора элементов, каждый из которых идентифицируется индексом массива, а структура — это тип данных, который хранит разные типы данных в одной и той же ячейке памяти. Таким образом, в этом главное отличие массива и структуры в C-программировании.

функциональность

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

Доступ

Можно получить доступ к элементу массива, используя индекс. Однако можно получить доступ к свойству структуры, используя имя структуры и оператор точки. Следовательно, это еще одно различие между массивом и структурой в Си-программировании.

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

Кроме того, нет ключевого слова для объявления массива, но программист использует ключевое слово «struct» для объявления структуры.

Размер элемента данных

Еще одно различие между Array и Structure в C-программировании — это размер элементов данных. Каждый элемент в массиве имеет одинаковый размер, в то время как размер элементов в структуре может быть разным.

Доступ и поиск элементов

Более того, структура требует больше времени для доступа и поиска элементов по сравнению с массивом.

Заключение

Массив и структура являются двумя важными понятиями в программировании на Си. Программист может напрямую объявить массив, тогда как структура является определяемым пользователем типом данных. Разница между массивом и структурой в программировании на Си состоит в том, что массив помогает хранить коллекцию элементов одного и того же типа данных, в то время как структура помогает хранить разные типы данных как единое целое.

Массив против структуры

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

Содержание: Разница между массивом и структурой

  • Сравнительная таблица
  • Что такое массив?
  • Что такое структура?
  • Ключевые отличия

Сравнительная таблица

Основа отличия массив Состав
Определение Набор элемента или объекта, который хранит элемент одного вида в одном месте. Структура данных, которая хранит элементы разных видов в одном месте.
Представление «Массив arrayName;». «Структура.
Значения Принимает только целочисленные или алфавитные значения за один раз. Принимает целые или алфавитные значения или другие в течение одной операции.
Космос Пространство, выделенное для памяти, всегда статично. Пространство, выделенное структурой для памяти, всегда динамично.
Доступ Использует «/» для доступа к элементам в программе. Использует (.) Для доступа к элементам в программе.

Что такое массив?

В компьютерном программировании массив определяется как набор элемента или объекта, который хранит элемент одного вида в одном месте.Хотя его основной задачей остается хранение информации, поступающей из переменных, но лучше всего рассматривать ее как набор переменных, имеющих один и тот же тип. C ++ предоставляет информационную структуру, кластер, в котором хранится фиксированный размер последовательного сбора компонентов подобного рода. Экспонат используется для хранения коллекции информации. Тем не менее, регулярно более ценно рассматривать кластер как совокупность факторов подобного рода. Вместо того, чтобы объявлять отдельные элементы, например, number0, number1,… и number99, вы произносите одну переменную кластера, например, числа, и используете числа, числа и…, числа, чтобы говорить с отдельными факторами. Определенный компонент экспоната файлом. Чтобы произнести кластер в C ++, разработчик указывает вид компонентов и количество элементов, требуемых для экспоната, как показано после: «type arrayName;» Это становится известным как показ одиночного измерения. Массив arraySize должен иметь число, устойчивое больше, чем ноль, а sort может быть любым допустимым типом информации C ++. Например, чтобы произнести 10-компонентную выставку, названную, настраивают сортировку, двойную. Дисплеи C / C ++ позволяют вам охарактеризовать факторы, объединяющие несколько информационных объектов подобного рода, но структура представляет собой другой тип данных, описанный клиентом, который позволяет объединять информационные объекты различных типов.

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

В компьютерном программировании структура определяется как структура данных, которая хранит элементы разных видов в одном месте. Хотя его основной задачей становится сохранение хранимой информации, но это происходит с любой переменной и типом данных, будь то целое число или алфавит, и, следовательно, имеет широкие преимущества. Структуры используются для общения с записями. Предположим, вам необходимо отслеживать свои книги в библиотеке. Вам может потребоваться отслеживать сопутствующие качества каждой книги, например, ее название, автора, тему, идентификатор книги. Например: Вам нужно хранить некоторые данные о человеке: его / ее имя, номер гражданства и заработную плату. Вы можете без особого труда выделить отличительные факторы name, citNo, компенсацию за независимое хранение этих данных. В любом случае позже вам нужно будет хранить данные о разных людях. В настоящее время вам нужно будет создать разные факторы для каждого отдельного человека: name1, citNo1, salary1, name2, citNo2, salary2. Тег структуры является дискреционным, и каждое определение части является определением общей переменной, например, int i; или буй f; или любое другое существенное определение переменной. В конце определения структуры, перед последней точкой с запятой, вы можете указать хотя бы один структурный фактор, но это не обязательно. Чтобы охарактеризовать структуру, вы должны использовать объяснение структуры. В провозглашении структуры описывается другая сортировка информации, состоящая из нескольких частей, для вашей программы. Организация структуры артикуляции это: «структура.

Структуры данных, которые необходимо знать каждому программисту

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

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

Что такое структура данных?

Независимо от профессии, ежедневная работа связана с данными. Шеф-повар, инженер-программист или даже рыбак — все они работают с теми или иными формами данных.

Структуры данных — это контейнеры, которые хранят данные в определенном формате. Этот специфический формат придает структуре данных определенные качества, которые отличают ее от других структур и делают ее пригодной (или напротив, неподходящей) для тех или иных сценариев использования.

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

Массивы

Массивы — одна из самых простых и часто применяемых структур данных. Такие структуры данных, как очереди и стеки, основаны на массивах и связанных списках (которые мы рассмотрим чуть позже).

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

Существует два типа массивов: одномерные и многомерные. Первые представляют собой простейшие линейные структуры, а вторые — вложенные и включают другие массивы.

Основные операции с массивами

  • Get — получить элемент массива по заданному индексу.
  • Insert — вставить элемент массива по заданному индексу.
  • Length — получить количество элементов в заданном массиве.
  • Delete — удалить элемент массива по заданному индексу. Может быть выполнено либо путем установки значения undefined , либо путем копирования элементов массива, за исключением удаляемого, в новый массив.
  • Update — обновление значения элемента массива по заданному индексу.
  • Traverse — проход цикла через массив для выполнения функций над элементами массива.
  • Search — поиск определенного элемента в заданном массиве с помощью выбранного алгоритма.

Применение массивов

  • Представляют собой строительные блоки более сложных структур данных, таких как стеки, очереди и т.д.
  • Подходят для хранения несложных связанных данных благодаря простоте использования.
  • Используются для различных алгоритмов сортировки, таких как сортировка вставок, сортировка пузырьком и т.д.

Связанный список (Linked List)

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

Существует несколько типов связанных списков.

  • Односвязный. Обход элементов может выполняться только в прямом направлении.
  • Двусвязный. Обход элементов может выполняться как в прямом, так и в обратном направлениях. Узлы включают дополнительный указатель, известный как prev , указывающий на предыдущий узел.
  • Круговые связанные. Это связанные списки, в которых предыдущий ( prev ) указатель “головы” указывает на “хвост”, а следующий указатель “хвоста” указывает на “голову”.

Основные операции со связанными списками

  • Insertion — добавление узла в список. Это может быть сделано на основе требуемого местоположения, такого как голова, хвост или где-то посередине.
  • Delete — удаление узла в начале списка или на основе заданного ключа.
  • Display — отображение полного списка.
  • Search — поиск узла в данном связанном списке.
  • Update — обновление значения узла в заданном ключе.

Применение связанных списков

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

Стек — линейная структура данных, которая создается на основе массивов или связанных списков. Стек следует принципу Last-In-First-Out (LIFO, “первым на вход — последним на выход”), т.е. последний элемент, вошедший в стек, будет первым, кто покинет его. Причина, по которой эта структура называется стеком, в том, что ее можно визуализировать как стопку книг на столе (по-английски stack).

Основные операции со стеком

  • Push — вставка элемента в верхнюю часть стека.
  • Pop — удаление элемента из верхней части стека с возвращением элемента.
  • Peek — просмотр элемента в верхней части стека.
  • isEmpty — проверка пустоты стека.

Применение стеков

  • В истории навигации браузера.
  • Для реализации рекурсии.
  • При выделении памяти на основе стека.

Очередь

Как и стек, очередь — это еще один тип линейной структуры данных, основанной либо на массивах, либо на связанных списках. Очереди отличаются от стеков тем, что они основаны на принципе First-In-First-Out (FIFO, “первым на вход — первым на выход”), где элемент, который входит в очередь первым, и покинет ее первым.

Реальная аналогия структуры данных “очереди” — это очередь людей, ожидающих покупки билета в кино.

Основные операции с очередями

  • Enqueue — вставка элемента в конец очереди.
  • Dequeue — удаление элемента из передней части очереди.
  • Top/Peek — возвращает элемент из передней части очереди без удаления.
  • isEmpty — проверка содержимого очереди.

Применение очередей

  • Обслуживание нескольких запросов на одном общем ресурсе.
  • Управление потоками в многопоточных средах.
  • Балансировка нагрузки.

Граф — это структура данных, представляющая собой взаимосвязь узлов, которые также называются вершинами. Пара (x,y) называется ребром. Это указывает на то, что вершина x соединена с вершиной y . Ребро может указывать на вес/стоимость, то есть стоимость прохождения по пути между двумя вершинами.

Ключевые термины

  • Размер — количество ребер в графике.
  • Порядок — количество вершин в графе.
  • Смежность — случай, когда два узла соединены одним и тем же ребром.
  • Петля — вершина, соединенная ребром сама с собой.
  • Изолированная вершина — вершина, которая не связана с другими вершинами.

Графы делятся на два типа. Они различаются главным образом по направлениям пути между двумя вершинами.

  • Ориентированные графы: все ребра имеют направления, указывающие начальную и конечную точки (вершины).
  • Неориентированные графы: ребра не имеют направлений, которые позволяют обходам происходить с любого направления.

Распространенные алгоритмы обхода графов

  • Поиск в ширину (BFS) — метод поиска кратчайшего пути в графе, основанный на вершинах.
  • Поиск в глубину (DFS) — метод, основанный на ребрах.

Основные операции с графами

  • Add vertex : добавить вершину в граф.
  • Add edge : добавить ребро между двумя вершинами.
  • Display : отобразить вершину.
  • Total cost of traversal : найти общую стоимость пути обхода.

Применение графов

  • Для представления потоковых вычислений.
  • При распределении ресурсов операционной системой.
  • Реализация алгоритмов поиска друзей в Facebook.
  • Расчет кратчайшего пути между двумя локациями (Google Maps).

Дерево

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

Существует несколько типов деревьев.

  • N-арное дерево.
  • Сбалансированное дерево.
  • Бинарное дерево.
  • Бинарное дерево поиска (BST).
  • Дерево AVL.
  • Красно-черное дерево.
  • 2-3-дерево.

BST — самые распространенные типы деревьев.

Основные операции с BST

  • Insert — вставка элемента в дерево.
  • Search — поиск элемента в дереве.
  • PreorderTraversal — обход дерева прямым способом.
  • InorderTraversal — обход дерева центрированным способом.
  • PostorderTraversal — обход дерева обратным способом.

Применение деревьев

  • Представление организации.
  • Представление компьютерной файловой системы.
  • Представление химической формулы.
  • В деревьях принятия решений.
  • Внутри JVM (Java Virtual Machine) для хранения объектов Java.

Хэш-таблица

Хэш-таблица хранит данные в парах ключ-значение. Это означает, что каждый ключ в хэш-таблице имеет некое значение, связанное с ним. Такая простая компоновка обеспечивает эффективность хэш-таблиц, независимо от их размера, при работе с данными.

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

Хеширование (хэш-функция)

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

  • h — хэш-функция.
  • k — ключ, из которого должно быть определено хэш-значение.
  • m — размер хэш-таблицы.

Например, рассмотрим использование хэш-функции k%17 . Если исходный ключ равен 20 , то хэшированный будет 20%17=3 . Значение будет храниться в хэш-таблице под индексом 3 .

Зачем нужен хэш?

Некоторые задаются вопросом, зачем проходить через дополнительный процесс хэширования, когда можно просто сопоставить значения непосредственно с ключом. Хотя прямое сопоставление несложно, оно может оказаться неэффективным при работе с большим набором данных. С помощью хеширования можно достичь почти постоянного времени O(1).

Коллизии

Поскольку для преобразования ключей используется общая хэш-функция, существует вероятность коллизий. Рассмотрим приведенный ниже пример с учетом хэш-функции k%17 .

  • Когда k = 18, h(18) = 18%17 = 1.
  • При k = 20, h(20) = 20%17 = 3.
  • При k = 35, h(35) = 35%17 = 1.

Когда ключи равняются 18 и 35, происходит коллизия, поскольку они направляются к индексу 1.

Коллизии можно разрешить с помощью таких стратегий, как раздельная цепочка и открытая адресация.

Основные операции с хэш-таблицами

  • Search — поиск элемента в хэш-таблице.
  • Insert — вставка элемента в хэш-таблицу.
  • Delete — удаление элемента из хэш-таблицы.

Применение хэш -таблиц

  • В индексации баз данных.
  • При проверке орфографии.
  • При реализации заданной структуры данных.
  • В кэше.

Заключение

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

Разница между массивом и структурой

И массив, и структура являются типом данных контейнера. Основное различие между массивом и структурой заключается в том, что «массив» содержит все элементы «того же типа данных», а размер массива определяется во время его объявления, которое записывается числом в квадратных скобках, которому предшествует имя массива. .

«Структура» содержит все элементы «другого типа данных», и ее размер определяется количеством элементов, объявленных в структуре при ее определении.

Есть еще несколько различий между массивом и структурой, которые рассматриваются в сравнительной таблице, приведенной ниже.

Сравнительная таблица

Основа для сравнения Массив Состав
Базовый Массив — это набор переменных одного типа данных. Структура — это набор переменных разного типа данных.
Синтаксис введите имя_массива [размер]; struct sruct_name <
тип element1;
тип element1;
.
.
> переменная1, переменная2,. .;
объем памяти Элементы массива хранятся в непрерывной области памяти. Элементы структуры не могут храниться в непрерывной области памяти.
Доступ Доступ к элементам массива осуществляется по их порядковому номеру. Доступ к элементам структуры осуществляется по их именам.
Оператор Объявление массива и оператор доступа к элементу — «[]» (квадратная скобка). Оператор доступа к элементу структуры — "." (Оператор точки).
Указатель Имя массива указывает на первый элемент в этом массиве, поэтому имя массива является указателем. Имя структуры не указывает на первый элемент в этой структуре, поэтому имя структуры не является указателем.
Объекты Объекты (экземпляры) массива не могут быть созданы. Могут быть созданы объекты структуры (экземпляр или структурная переменная).
Размер Каждый элемент в массиве имеет одинаковый размер. Каждый элемент в структуре имеет разный тип данных.
Битовое поле Битовое поле не может быть определено в массиве. Битовое поле может быть определено в структуре.
Ключевое слово Нет ключевого слова для объявления массива. "struct" — ключевое слово, используемое для объявления структуры.
Определяемые пользователем Массивы не определяются пользователем, они объявляются напрямую. Структура — это определяемый пользователем тип данных.
Доступ Доступ к элементу массива требует меньше времени. Для доступа к элементам конструкции требуется сравнительно больше времени.
Поиск Поиск элемента массива занимает меньше времени. Поиск элемента структуры занимает сравнительно больше времени, чем элемент массива.

Определение массива

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

Массив можно объявить следующим образом:

// В C ++ введите var_name [size]; // В Java введите var-name []; var_name = новый тип [размер];

Здесь тип описывает тип данных массива, а размер определяет емкость массива. Объявим массив целочисленного типа и размера 10, т.е. он будет содержать десять элементов. Индексация в массивах начинается от «0» до «size-1».

int p [10]; int * ptr = p; // Вы также можете объявить указатель на массив.

Доступ к элементам в массиве можно получить двумя способами: во-первых, с их «индексацией массива», а во-вторых, с помощью «арифметики указателей». Эффективный способ доступа к массиву — «арифметика указателей».

// доступ с использованием арифметики указателя Void display_array (int * S) >

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

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

Структура — это набор переменных разного типа. Все переменные являются членами структуры, и все члены по умолчанию являются «общедоступными». В ООП структуры могут объявлять как функции, так и переменные. Структура также может быть унаследована. Структуры обычно создаются для хранения информации.

Объявление структуры выглядит следующим образом: —

struct sruct_name переменная1, переменная2,. .;

Давайте разберемся с этим на примере: —

Здесь мы создали структуру для хранения информации о студенте, и мы создали экземпляры структуры, которые называются переменными структуры, которые являются stdnt1, stdnt2. Эти два экземпляра имеют одни и те же элементы структуры, но могут содержать разные значения для одного члена. Доступ к члену структурной переменной можно получить, используя оператор точки (.), Например: —

stdnt1.name = "Аджай"; stdnt1.School = "Святой Джон"; stdnt1.city = "Нагпур";

Информация, содержащаяся в одной структурной переменной, может быть присвоена другой структурной переменной:

Член структурной переменной может быть передан функции и всей структуре, а также передан в функцию, а структура также может быть передана с помощью метода вызова по ссылке.

функция (stdnt1.city); // передача члена структурной переменной. функция (stdnt1); // передача всей структуры в вызов функции методом значения. функция (& stdnt1); // передача структурной переменной с помощью вызова по ссылочному методу.

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

srtuct Student * stdnt; // объявление указателя на структуру типа "сотрудник". stdnt = & stdnt1;

Также возможна агрегированная инициализация структурной переменной.

Вывод

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *