Вопрос по языку 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?
![]()
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.
Индексаторы

Программисты хорошо знакомы с процессом доступа к индивидуальным элементам, содержащимся в стандартных массивах, через операцию индекса ([]). В C# имеется возможность проектировать специальные классы и структуры, которые могут быть индексированы подобно стандартному массиву, посредством определения . Это конкретное языковое средство наиболее полезно при создании специальных типов коллекций (обобщенных и необобщенных). Индексаторы могут быть одно- или многомерными.
Одномерные индексаторы
Ниже приведена общая форма одномерного индексатора:
где тип_элемента обозначает конкретный тип элемента индексатора. Следовательно, у каждого элемента, доступного с помощью индексатора, должен быть определенный тип_элемента. Этот тип соответствует типу элемента массива. Параметр индекс получает конкретный индекс элемента, к которому осуществляется доступ. Формально этот параметр совсем не обязательно должен иметь тип int, но поскольку индексаторы, как правило, применяются для индексирования массивов, то чаще всего используется целочисленный тип данного параметра.
В теле индексатора определены два аксессора (т.е. средства доступа к данным): get и set. Аксессор подобен методу, за исключением того, что в нем не объявляется тип возвращаемого значения или параметры. Аксессоры вызываются автоматически при использовании индексатора, и оба получают индекс в качестве параметра. Так, если индексатор указывается в левой части оператора присваивания, то вызывается аксессор set и устанавливается элемент, на который указывает параметр индекс. В противном случае вызывается аксессор get и возвращается значение, соответствующее параметру индекс. Кроме того, аксессор set получает неявный параметр value, содержащий значение, присваиваемое по указанному индексу.
Давайте рассмотрим пример:
В текущем классе MyArr определен индексатор, позволяющий вызывающему коду идентифицировать подэлементы с применением числовых значений. Однако надо понимать, что это не обязательное требование метода-индексатора.
Следует особо подчеркнуть, что индексатор совсем не обязательно должен оперировать массивом. Его основное назначение — предоставить пользователю функциональные возможности, аналогичные массиву.
На применение индексаторов накладываются два существенных ограничения. Во-первых, значение, выдаваемое индексатором, нельзя передавать методу в качестве параметра ref или out, поскольку в индексаторе не определено место в памяти для его хранения. И во-вторых, индексатор должен быть членом своего класса и поэтому не может быть объявлен как static.