Многомерные массивы (C) | Microsoft Learn
Twitter LinkedIn Facebook Адрес электронной почты- Статья
Индексное выражение также может иметь несколько индексов, как показано ниже:
expression1 [ expression2 ] [ expression3 ] /*. ..*/ ;
Индексные выражения связываются в направлении слева направо. В первую очередь вычисляется крайнее левое выражение подстрочного индекса expression1[ expression2 ]
. Адрес, полученный в результате добавления expression1
и expression2
формирования выражения указателя; затем expression3
добавляется в это выражение указателя, чтобы сформировать новое выражение указателя и т. д., пока не будет добавлено последнее выражение подстрочного индекса. Оператор косвенного обращения (*
) применяется после вычисления последнего выражения с индексом, если конечное значение указателя не относится к типу массива.
Выражения с несколькими индексами ссылаются на элементы «многомерных массивов». Многомерный массив — это массив, элементы которого являются массивами. Например, первый элемент трехмерного массива является двумерным массивом.
Примеры
В следующих примерах массив с именем prop
объявляется с тремя элементами, каждый из которых представляет собой массив 4×6, содержащий значения типа int
.
int prop[3][4][6]; int i, *ip, (*ipp)[6];
Ссылка на массив prop
выглядит следующим образом:
i = prop[0][0][1];
В примере показано, как ссылаться на второй отдельный int
элемент .prop
Массивы хранятся по строкам, поэтому последний индекс изменяется быстрее; выражение prop[0][0][2]
ссылается на следующий (третий) элемент массива и т. д.
i = prop[2][1][3];
Этот оператор представляет собой более сложную ссылку на отдельный элемент массива prop
. Выражение вычисляется следующим образом.
Первый индекс,
2
, умножается на размер массиваint
4×6 и добавляется к значению указателяprop
. Результат указывает на третий массив 4×6 массиваprop
.Второй индекс,
1
, умножается на размер 6-элементного массиваint
и добавляется к адресу, представленному значениемprop[2]
.Каждый элемент массива из 6 элементов является значением
int
, поэтому окончательный индекс3
, умножается на размерint
перед добавлением вprop[2][1]
. Результирующий указатель указывает на четвертый элемент 6-элементного массива.Оператор косвенного обращения применяется к значению указателя. Результат — элемент
int
, расположенный по этому адресу.
В следующих двух примерах показаны случаи, когда оператор косвенного обращения не применяется.
ip = prop[2][1]; ipp = prop[2];
В первом из этих операторов выражение prop[2][1]
является допустимой ссылкой на трехмерный массив prop
; оно ссылается на 6-элементный массив (объявленный ранее). Так как значение указателя обращается к массиву, оператор косвенного обращения не применяется.
Аналогично результат выражения prop[2]
во втором операторе ipp = prop[2];
представляет значение указателя, указывающее на двумерный массив.
См. также
Оператор индекса:
Как найти длину массива в C?
Как найти длину массива в C?
Как найти длину массива в C?
. rateek Narang Бесплатно Начать обучениеОбзор
Нам требуется длина массивов в различных операциях, таких как перебор массива, копирование массива и многое другое, поэтому здесь, в этой статье, мы рассмотрим, как найти длину массива, используя различные методы.
Scope
В этой статье мы увидим:
- Логика программирования для вычисления длины массива в C с использованием оператора sizeof().
- Логика программирования для вычисления длины массива в C с использованием арифметики указателей.
Массивы имеют фиксированную длину, указанную в объявлении массива. В C нет встроенного метода для получения размера массива. Требуется небольшое усилие, чтобы получить длину массива, используя встроенные методы или указатели в C. Можно найти длину массива несколькими способами.
В этом руководстве мы рассмотрим два метода:
- Использование оператора sizeof().
- Использование арифметики указателя.
Логика программирования для вычисления длины массива на C
- Определение размера массива с помощью оператора sizeof, например. размер(обр).
- Определите размер значения типа данных с помощью sizeof(datatype).
- Чтобы найти длину массива (сколько в нем элементов), разделите общий размер массива на размер одного используемого типа данных.
Итак, логика будет выглядеть так:
Длина массива = размер массива/размер 1 типа данных, который вы используете для определения массива.
Логика более подробно разработана программно в разделе ниже [Использование sizeof()].
1. Использование sizeof()
Позвольте задать вам вопрос. Можете ли вы указать длину массива, приведенного ниже?
Потратив некоторое время, вы можете ответить на этот вопрос, но, если вы получите массив размером 10X10X10X от указанного выше массива, это будет сложно и займет много времени, но вопрос в том, почему вы будете считать элементы вручную, когда у нас есть оператор sizeof() на языке C.
Итак, позвольте мне представить вам, как использовать оператор sizeof() для подсчета элементов массива.
Оператор sizeof() в C вычисляет размер передаваемых переменных или типов данных в байтах. Мы не можем вычислить размер массива напрямую с помощью sizeof(), мы будем использовать логику программирования, определенную выше, чтобы найти длину.
Синтаксис для вычисления длины массива с помощью sizeof() :
В приведенном выше синтаксисе:
- arr_size : переменная для хранения размера массива.
- sizeof(name_of_array) : простое имя массива, размер которого мы вычисляем.
- sizeof(name_of_array[index]) : размер одного элемента массива.
Теперь давайте поймем, почему эта формула работает для расчета длины массива:
Чтобы вычислить размер всего массива, мы умножаем размер 1 элемента массива на несколько элементов массива.
Поэтому для вычисления длины массива мы делим размер всего массива, т.е. sizeof(name_of_array), на размер одного элемента массива, т.е. sizeof(name_of_array[index]). Отсюда мы получаем длину этого массива.Программа на C для вычисления длины целочисленного массива с использованием sizeof()
Теперь давайте посмотрим на программу на C, которая вычисляет длину целочисленного массива с помощью оператора sizeof().
Программа на C:
Результат:
Программа на C для вычисления длины массива символов с использованием sizeof()
Теперь давайте посмотрим на программу на C, которая вычисляет длину массива символов с помощью оператор sizeof().
Программа С:
Вывод:
2. Использование арифметики указателей
Вычисление длины массива в C с использованием арифметики указателей в качестве хака. Решение короткое по сравнению с оператором sizeof().
Следующее выражение используется для вычисления длины массива:
- size_variable : используется для хранения размера массива.
- &array_name : возвращает указатель
- (& имя_массива + 1) = адрес элементов впереди.
- (&имя_массива + 1) — имя_массива = разница между адресами элементов впереди и массивом дает длину массива.
Давайте рассмотрим несколько программ на C, чтобы лучше понять это:
Программа на C для вычисления длины массива int с использованием арифметики указателей 27 Программа на C для вычисления длины массива символов Использование арифметики указателей
C Программа:
Результат:
Заключение
Итак, давайте суммируем то, что мы узнали в этом уроке:
- 90 038 Нет такого встроенного метода для вычисления длины массива в C мы должны вычислить его с помощью выражений.
- Есть два способа создать выражение и вычислить длину массива в C.
- Использование оператора sizeof() и арифметических операций с указателями.
- Оператор sizeof() в C вычисляет размер передаваемых переменных или типов данных в байтах. Поэтому, чтобы найти длину массива, разделите общий размер массива на размер одного типа данных, который вы используете.
- Арифметика указателя — это хак, в котором разница между адресом элементов впереди и массивом дает длину массива.
Полное руководство по массивам в C. В этом блоге мы будем обсуждать… | от Pepcoding
5 минут чтения·
4 декабря 2021 г.В этом блоге мы обсудим массивы в C. Массив — это структура данных в языке программирования C, которая может хранить последовательный набор элементов фиксированного размера. Давайте узнаем больше о массивах.
Массивы в C:
- Массивы представляют собой наборы элементов данных одного типа, которые хранятся в смежных областях памяти.
- Массивы являются производными типами данных в языке программирования C, которые могут содержать примитивные типы данных, такие как int, char, double, float и т. д.
- Простейшей структурой данных является массив, который позволяет извлекать каждый элемент данных случайным образом, используя его порядковый номер.
- Массив, например, может содержать только целые или символьные члены, но не оба одновременно.
- Доступ к каждому массиву можно получить, используя индекс массива, который должен быть положительным целым числом, заключенным в квадратные скобки. Это начинается с числового значения 0 и заканчивается на единицу меньше, чем значение индекса массива. Массив[n] с n элементами, например, массив[0],массив[1],…..массив[n-1]. Где «0» — нижняя граница массива, а «n-1» — верхняя граница массива.
- Предположим, вы хотите сохранить заработную плату 100 сотрудников. Вы можете отслеживать заработную плату всех работников, установив 100 переменных типа данных float, таких как employeeSalary1, employeeSalary2, employeeSalary3 и employeeSalary100.
- Метод сохранения 100 зарплат трудоемок, отнимает много времени и сложен в управлении.
- В этом случае язык C имеет массив структур данных, который решает проблему хранения N сопоставимых данных. Чтобы хранить зарплату 100 сотрудников, мы можем определить массив с плавающей запятой длиной 100. Это структура данных, которая является линейной и однородной. Линейные структуры данных хранят свои отдельные элементы данных в памяти в последовательных последовательностях. Однородные данные означают, что все отдельные элементы данных относятся к одному типу данных.
- Типы данных элементов могут быть любым допустимым типом данных, например char, int или float. Объявление массива информирует компилятор о типе, имени и размере массива.
Ниже приведен основной синтаксис для определения массива:
<тип данных> имя_массива [размер1][размер2]…..[размер].
, где тип данных может быть либо простым типом данных, либо структурой
[size1][size2]…. .[sizen] указать размерность массива
Например, целое число age[100]; двойной сотрудник[100]; плавающий объем[80][20][40];
Мы можем использовать переменную массива age[100] типа int для решения вышеупомянутой проблемы. Эта переменная-массив имеет размер 100 и может хранить 100 целочисленных значений.
Компонентами этого массива являются age[0], age[1], age[2], age[3], age[4], age[98] и age[99].
В C индексы начинаются с нуля, поэтому age[0] — первый элемент, age[1] — второй элемент и так далее.
Характеристики массива:
- Каждый элемент имеет одинаковый тип данных и размер, т.е. int = 4 байта.
- Элементы массива хранятся в смежных областях памяти, причем начальный элемент помещается в наименьшую ячейку памяти.
- Доступ к элементам массива может быть случайным, поскольку мы можем определить адрес каждого элемента массива, используя указанный базовый адрес и размер элемента данных.
В C есть 3 типа массивов: одномерные массивы, двумерные массивы и многомерные массивы.
1)Одномерный массив :-В одномерный массив . Одномерный (1D) массив — это массив, представленный одной строкой или столбцом.
Одномерные массивы называются векторами.
Другими словами, он может быть представлен в одном измерении — ширине или высоте — как показано на рисунке ниже:
2) Двумерные массивы : — Двумерный массив известен как матрица или таблица. . Матрица содержит два индекса, по одному для каждой строки и по одному для каждого столбца. Другими словами, двумерный массив — это двумерный массив внутри одномерного массива.
Ниже приведен стандартный синтаксис объявления двумерного массива:
имя массива[строка] [столбец] тип данных; где тип данных предоставляет тип данных массива. Имя массива определяет имя массива, строка определяет количество строк массива, а столбец указывает количество столбцов массива.
Путем умножения размеров всех измерений можно вычислить общее количество элементов, которые могут содержаться в двух массивах.
Например, массив int x[10][40] может хранить (10*40) = 400 элементов.
В C массив с более чем одним измерением называется многомерным массивом. Двумерный массив — это самый простой тип многомерного массива.
3) Многомерный массив :
Мы можем определить n-мерный массив, используя n скобок [], где n — номер измерения.
В общем случае объявление n-мерного массива выглядит следующим образом:
Например,
int a[4][4][5] Трехмерный массив.
int a[2][5][7][4 ] Четырехмерный массив.
Путем умножения размеров всех измерений можно вычислить общее количество элементов, которые могут содержаться в многомерном массиве.
Трехмерный массив — это набор двумерных массивов. На изображении ниже показан трехмерный массив с тремя таблицами, каждая из которых состоит из четырех строк и двух столбцов.