Как мне объявить указатель на указатель на массив? - PullRequest
2 голосов
/ 26 августа 2011

У меня есть указатель на массив Ts:

T (*anArray)[]; // A pointer to an array of Ts.

Как мне объявить указатель на указатель на массив Ts?(т.е. указатель на вышеприведенное.)

Это:

T (**anArray)[];

или

T *(*anArray)[];

или

T (*anArray)*[];

или что-тоеще полностью?

Спасибо,

Альф

Ответы [ 5 ]

3 голосов
/ 26 августа 2011

Первый - T(**anArray)[];

1 голос
/ 26 августа 2011

Ответ на ваш вопрос заключается в том, что дополнительные указатели за пределами круглых скобок применяются к типу, содержащемуся в массиве, а внутри круглых скобок они применяются к типу самой переменной:* Но лучший совет - избегать проблемы и использовать typedefs:

typedef int array_t[10];
array_t **variable;      // pointer to pointer to array of 10 integers
1 голос
/ 26 августа 2011

T *(*anArray)[]; -> anArray - указатель на массив указателей T

T (**anArray)[]; -> anArray - указатель на указатель на массив T

0 голосов
/ 26 августа 2011

Хороший способ выяснить, как создавать необычные комбинации указателей, например, такой: начните с имени переменной, посмотрите направо, не пересекая скобки, посмотрите налево, повторите.Скажите, что вы видите в том порядке, в котором вы это видите.

Для указателя на указатель на массив мы имеем

int (**a)[5]

Начнем с.Мы смотрим направо, но там есть парень, так что смотрите налево.Хорошо, мы видим "*", так что это указатель.Теперь мы снова смотрим прямо ... все еще парен, так что вернемся влево.Еще один "*", так что это указатель на указатель.Посмотри направо, парен, посмотри налево, парен, так что теперь мы можем выпрыгнуть из скобок.Теперь мы видим скобки, поэтому у нас есть указатель на указатель на массив.Наконец, посмотрите налево и мы увидим int.Указатель на указатель на массив int с.

0 голосов
/ 26 августа 2011

Открыть cdecl.org , а затем скопировать и вставить в текстовое поле следующее:

  • declare a as pointer to pointer to array 10 of int

При вставке он сообщаетВы, что это значит в C ++.Ну, это так:

  • int (**a)[10]

Я уверен, что это то, что вы ищете?Поиграйте с ссылкой больше.Вы узнаете больше синтаксисов и как это сказать словами.

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