Указатель Арифметика - PullRequest
       3

Указатель Арифметика

3 голосов
/ 22 февраля 2012

Пытается понять арифметику указателей при работе с массивами. Мне кажется, они используются для быстрого доступа к массивам, но, возможно, я совершенно не прав. Я имею в виду, если у нас есть это:

* (myArray + 1), я думаю, мы перейдем к следующему месту в массиве.

Я конвертирую немного C ++ в C #, и C ++ использует арифметику указателей. Мне нужно, чтобы C # полностью управлялся, поэтому пытаюсь понять, как перевести указатель на C #.

Спасибо за любые идеи.

David

Ответы [ 4 ]

2 голосов
/ 23 февраля 2012

Предполагая, что myArray указывает на начало массива (любое его имя должно быть), *(myArray + 1) - это то же самое, что и myArray[1], а последний предпочтителен для удобства чтения.

Более сложная часть преобразования арифметического кода указателя - это когда вы используете указатель на некоторую случайную часть массива - *(current + 1), где current - указатель на произвольный элемент в массиве.Здесь вы должны выяснить исходный массив и индекс в массиве элемента, на который указывает current.Предполагая, что это myArray и i, приведенный выше код преобразуется в myArray[i+1]

2 голосов
/ 22 февраля 2012

Может быть, это поможет: http://www.cplusplus.com/doc/tutorial/pointers/

И * (myArray +1) равно myArray [1].

2 голосов
/ 22 февраля 2012

Если вы не совсем довольны указателями, ваша жизнь будет немного проще в C #. Прежде всего, код, который вы разместили:

`*(myArray + 1)`

Ваше понимание в основном верно, вы разыменовываете 1-й элемент в myArray. Или, другими словами, доступ к myArray[1].

При переходе на C # вы, вероятно, используете общий List<T>, где T - это тип вашего myArray. Вам доступен аналогичный синтаксис - myArray[i], а также множество других функций в List.

2 голосов
/ 22 февраля 2012

*(myArray + 1) в точности эквивалентно myArray[1]. Вы всегда должны предпочесть последнее. Его легче читать, и не будет никакой разницы в производительности.

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