调试技巧:如何以数组的方式查看一个指针

来源:互联网 发布:mac下载软件 编辑:程序博客网 时间:2024/04/28 20:58
对于下面两个变量:
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]的值。这样借助一个全局变量,和调试的时候给这个全局变量赋值,我们就可以用数组的方式查看一个指针了。
       在文章的最后,我推荐在你的工程里加入一个temp.cpp,这个cpp的内容大致如下:
              typedef char chara[10];
              chara *_char;
              typedef short shorta[10];
              shora *_short;
              typedef int inta[10];
              inta *_int
              typedef float floata[10];
              floata *_float;
              typedef double doublea[10];
              doublea *_double;
……
这样你就可以在调试的时候以数组的方式查看各种类型的数据了,对比在memory窗口看那些天文数字的十六进制数据实在是方便多了。
 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 移动卡流量超了怎么办 狗狗老是挠痒痒怎么办 出差同住的同事睡觉打鼾怎么办 小孩皮肤太黑了怎么办 苹果平板突然黑屏打不开怎么办 孩子认人晚上哭怎么办 主腹动脉有硬块怎么办 糖链抗原125偏高怎么办 狗长了个肿瘤怎么办 腺肌瘤糖类抗原125升高怎么办 糖类抗原724单项升高怎么办? 化疗期间糖类抗原升高怎么办? 门面租客到期不搬怎么办 这几天老想初恋怎么办 结婚了还想初恋怎么办 九年了想初恋了怎么办 吃肥肉恶心想吐怎么办 宝宝吃了母乳不吃奶粉怎么办 母猫的奶少怎么办 鲤鱼打挺起不来怎么办 练不会鲤鱼打挺怎么办 鲤鱼打挺脖子痛怎么办 新买的沙发太高怎么办 额最后离开公司没人关灯怎么办 看到我妹妹就烦怎么办 野塘钓鱼不开口怎么办 团关系找不到接收地怎么办 两岁宝宝就是不肯说话怎么办 两岁宝宝不肯吃药怎么办 并蹄莲叶子大黄怎么办 异地恋见面来大姨妈怎么办 奶水太多宝宝老是呛到怎么办 奶水太多吃奶婴儿呛怎么办 人家不愿意交我为朋友怎么办 面对诋毁我的人怎么办 做事太细致速度太慢怎么办 高一儿子早恋了怎么办 儿子18岁谈朋友怎么办 和朋友为钱吵架怎么办 感情里总担心失去怎么办 眼石移出盲僧怎么办