超有用的C 除錯小技巧 如何以陣列方式檢視指標

2021-05-23 00:06:05 字數 997 閱讀 4625

超有用的c++除錯小技巧--如何以陣列方式檢視指標

轉來的文章,太有用了。

對於下面兩個變數:

int *p = new int[10];

int q[10];

在watch視窗中檢視有不同的效果,檢視p的時候可以看到乙個位址,展開+號只能看p[0]的值;檢視q的時候也可以看到乙個位址,但是展開+號可以看q[0]-q[9]的值。相比之下q的檢視方式比p要方便多了。那麼有沒有辦法以q的方式檢視p呢,這就是本文要介紹的乙個除錯技巧。

首先我們需要寫如下兩行**:

typedef int inta[10];

inta *_int;

然後在watch視窗敲入一行:_int=p

再然後在watch視窗敲入一行:_int[0]

展開_int[0]的那個+號,哇!顯示的是_int[0]—_int[9]的值。而這些值正好就是p[0]—p[9]的值。再敲入_int[1]並展開看看,正好是p[10]—p[19]的值。這樣借助乙個全域性變數,和除錯的時候給這個全域性變數賦值,我們就可以用陣列的方式檢視乙個指標了。

typedef char chara[10];

chara *_char;

typedef short shorta[10];

shorta *_short;

typedef int inta[10];

inta *_int;

typedef float floata[10];

floata *_float;

typedef double doublea[10];

doublea *_double;

這樣你就可以在除錯的時候以陣列的方式檢視各種型別的資料了,對比在memory視窗看那些天文數字的十六進製制資料實在是方便多了。

注:原文有幾個錯誤,我已經糾正過來了,上面的**可以直接用了,在程式中加入#include "temp.h"就行,真的很方便!!!如果想一次性多檢視幾個值,改變那個「10」就可以啦

C 程式設計中的四個除錯小技巧

c 程式設計中的四個除錯小技巧 1.除錯標記 適用預處理 define定義乙個或多個除錯標記,在 中把除錯部分使用 ifdef 和 endif 進行管理。當程式最終除錯完成後,只需要使用 undef標記,除錯 就會消失。常用的除錯標記為debug,語句序列 define debug ifdef de...

C 程式設計中的四個除錯小技巧

1 除錯標記適用預處理 define定義乙個或多個除錯標記,在 中把除錯部分使用 ifdef和 endif進行管理。當程式最終除錯完成後,只需要使用 undef標記,除錯 就會消失。常用的除錯標記為debug,語句序列 define debug ifdef debug 除錯 endif 2 執行期間...

C中幾個特定巨集的介紹 一些除錯的小技巧

在c的除錯中,有幾個巨集經常被使用來輔助程式設計師進行程式除錯,這裡對之進行簡單介紹。1 function 該巨集被用來表示呼叫該巨集的函式。2 line 該巨集用來表示呼叫該巨集的對應行數。3 time 該巨集用來表示呼叫該巨集時的時間。4 date 該巨集用來表示呼叫該巨集的日期。5 file ...