次の方法で共有


Visual C++ デバッガーのウォッチ ウィンドウで配列ポインターを展開する

この記事では、配列ポインターを展開して、Visual C++ デバッガー Watch ウィンドウ内のすべての配列要素を表示する方法について説明します。

元の製品バージョン: Visual C++
元の KB 番号: 198953

まとめ

Visual C++ バージョン 6.0 以降では、配列ポインターを展開して、Visual C++ デバッガー Watch ウィンドウ内のすべての配列要素を表示できるようになりました。 この機能は文書化されていません。

Watch ウィンドウで、ポインターの後にコンマと配列内の要素の数が続く式を入力します。

詳細

  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. Watch または QuickWatch ウィンドウで、変数pまたはptrを追加します。 変数の横にプラス記号 (+) が表示されます。

  4. プラス記号 (+) をクリックして変数を展開します。 参照先の配列の最初の要素のみが表示されます。

  5. 次に、Watch ウィンドウに「p,10 または ptr,11」と入力します。

  6. プラス記号 (+) をクリックして変数を展開します。 これで、それが指す配列のすべての要素が表示されます。

特定の要素範囲を表示する場合は、最初の要素のアドレスを入力して開始インデックスを指定し、その後に前の手順で説明したように書式指定子を入力します。 たとえば、 (p+3),8 は要素 p[3..10]を示し、 (ptr+3),10 は要素 ptr[3..12]を示します。 残念ながら、 Watch ウィンドウの開始インデックスは [0]になり、実際にはこの例のインデックス 3 に対応します。 配列要素の実際のインデックスを取得するには、表示される各インデックスにオフセット 3 を追加する必要があります。