Подтвердить что ты не робот

Eclipse-С++ - Отладка: см. Содержимое массива

Можно ли увидеть содержимое динамически распределенного массива, как в:

int *array = new int[dimension];

Я вижу только значение указателя.

edit: просто нашел параметр "отображать как массив", но мне всегда нужно вручную вводить размер массива. Можно ли получить это автоматически?

4b9b3361

Ответ 1

в eclipse, чтобы увидеть содержимое динамически выделенного массива (для любого другого, кто наткнулся на этот вопрос),

  • убедитесь, что вы находитесь в точке отладки. найдите окно "переменные". если вы его не видите, нажмите "окно" > "показать представление" > "переменные".
  • щелкните правой кнопкой мыши по переменной массива
  • отображать как массив
  • eclipse не знает, насколько велик ваш массив, поэтому введите 0 для начального индекса и количество элементов, которые вы динамически выделили для длины.

choose display as array in eclipse

Ответ 2

Если вам не нужно многократно делать "Display As Array", откройте вкладку "Выражения" и добавьте выражение (*[email protected]). Не знаете, зачем нужны скобки. Без них вы получите ошибку.

Ответ 3

На вкладке "Выражения", если вы сделаете то, что четко отметили и введите (*[email protected]), вы можете динамически установить размер массива для отображения. Это даже работает, когда вам нужно другое выражение, чтобы получить его.

Итак, у вас есть переменная x, которая содержит ваш размер массива, вы набираете (*[email protected]), и он будет использовать содержимое x как измерение.

"x" также могут быть такими, как содержимое структуры или разметки указателя и т.п. - т.е.

(*[email protected]>x) 

отлично работает.

Ответ 4

просто нашел параметр "отображать как массив", но мне всегда приходится вручную вводить размер массива. Можно ли получить это автоматически?

Это хорошо. Я бы придерживался этого. Получение массива невозможно в общем случае на C или С++, хотя, конечно, в некоторых тривиальных случаях это может быть сделано (но, вероятно, еще нет, функции должны быть реализованы до их существования, чтобы перефразировать Raymond Chen).