Поделиться через


Разверните указатель массива в окне "Контроль за отладчиком Visual C++"

В этой статье описывается, как развернуть указатель массива для просмотра всех элементов массива в окне "Контроль за отладчиком Visual C++".

Исходная версия продукта: Visual C++
Исходный номер базы знаний: 198953

Итоги

Начиная с Visual C++ версии 6.0 теперь можно развернуть указатель на массив для просмотра всех элементов массива в окне "Контроль за отладчиком Visual C++". Эта функция не задокументирована.

В окне "Контроль" введите выражение, которое вычисляет указатель, за которым следует запятая и количество элементов в массиве.

Дополнительная информация

  1. Создайте отладочную версию следующего кода в качестве консольного приложения.

    // Filename main.cpp
    // No compile option needed
    #include <iostream.h>
    void main(void)
    {
        int * p;
        char* ptr = "Hello World";
        p = new int [10];
    
        for(int i=0; i<=9; i++){*(p+i) = i+1;}
        cout << i <<endl;
    }
    
  2. Войдите в код с отладчиком и остановите его в последней строке кода.

  3. В окне "Контрольные" или "Быстрые часы" добавьте переменную p или ptr . Рядом с переменной появится символ плюса (+).

  4. Щелкните символ плюса (+), чтобы развернуть переменную. Вы увидите только первый элемент массива, к которому он указывает.

  5. Теперь в окне "Контрольные значения" введите p,10 или ptr,11.

  6. Щелкните символ плюса (+), чтобы развернуть переменную. Теперь вы увидите все элементы массива, к которому он указывает.

Если вы хотите увидеть определенный диапазон элементов, введите адрес первого элемента, чтобы указать начальный индекс, а затем описатель формата, как описано в предыдущих шагах. Например, (p+3),8 отображает элементы p[3..10], а (ptr+3),10 — элементы ptr[3..12]. К сожалению, начальный индекс в окне "Контроль " будет [0], который фактически соответствует индексу 3 в этом примере. Помните, что смещение 3 необходимо добавить в каждый отображаемый индекс, чтобы получить фактический индекс элемента массива.