Int arr c что это
Перейти к содержимому

Int arr c что это

Вопрос по языку C++ Что значит эта строчка? int *arr = new int[n];

*arr — «*» указатель, arr — это имя нашего массива, int — тип (integer — числовой), new int[n] — создать в нём кол-во n чисел!
Пример:
int n = 10;
int *arr = new int[n]; // мы создали десять цифр
arr[9] = 132; // отсчёт идёт с нуля, поэтому мы прировняли 10 эл. числу 132!
arr[0] = 3; // Первый элемент массива теперь равен 3

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

What does *arr[] mean? [closed]

Want to improve this question? Add details and clarify the problem by editing this post.

Closed 5 years ago .

i have this code from my previous exam and it’s the first time I see this *arr[] . What does that mean? Is it a matrix or an array? And what does it contain?

user avatar

3 Answers 3

As standalone expression *arr[] is not valid.

For variable definitions there are two meanings here, depending of the context in which such an expression appears:

Variable definition with initialiser (as per the OP’s snippet)

This defines an array of pointer to int , with its number of elements being determined by the number of elements in its initialiser. In the above example arr will have three elements.

Variable definition inside a function’s parameter list

If used like like this, that is inside a function declaration/definition

it in fact defines an int ** , a pointer to pointer to int . In the context of a function declaration/definition int * arr[] and int ** arr are equivalent, or more general T*[] equals T** .

To explicitly state this: In no case int * arr[] defines any int s.

Индексаторы

XYZ School

Программисты хорошо знакомы с процессом доступа к индивидуальным элементам, содержащимся в стандартных массивах, через операцию индекса ([]). В C# имеется возможность проектировать специальные классы и структуры, которые могут быть индексированы подобно стандартному массиву, посредством определения . Это конкретное языковое средство наиболее полезно при создании специальных типов коллекций (обобщенных и необобщенных). Индексаторы могут быть одно- или многомерными.

Одномерные индексаторы

Ниже приведена общая форма одномерного индексатора:

где тип_элемента обозначает конкретный тип элемента индексатора. Следовательно, у каждого элемента, доступного с помощью индексатора, должен быть определенный тип_элемента. Этот тип соответствует типу элемента массива. Параметр индекс получает конкретный индекс элемента, к которому осуществляется доступ. Формально этот параметр совсем не обязательно должен иметь тип int, но поскольку индексаторы, как правило, применяются для индексирования массивов, то чаще всего используется целочисленный тип данного параметра.

В теле индексатора определены два аксессора (т.е. средства доступа к данным): get и set. Аксессор подобен методу, за исключением того, что в нем не объявляется тип возвращаемого значения или параметры. Аксессоры вызываются автоматически при использовании индексатора, и оба получают индекс в качестве параметра. Так, если индексатор указывается в левой части оператора присваивания, то вызывается аксессор set и устанавливается элемент, на который указывает параметр индекс. В противном случае вызывается аксессор get и возвращается значение, соответствующее параметру индекс. Кроме того, аксессор set получает неявный параметр value, содержащий значение, присваиваемое по указанному индексу.

Давайте рассмотрим пример:

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

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

На применение индексаторов накладываются два существенных ограничения. Во-первых, значение, выдаваемое индексатором, нельзя передавать методу в качестве параметра ref или out, поскольку в индексаторе не определено место в памяти для его хранения. И во-вторых, индексатор должен быть членом своего класса и поэтому не может быть объявлен как static.

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

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