CFree调试,怎样显示数组全体成员?

proof1 2018-09-11 04:31:50

主程序main里 int a[]={7,12,0,3,2,9,5}
将数组a的地址传递给子程序。形参:(int *a) 实参:(a)
子程序里,改动a[]内各成员的值。
代码无误。

问题:
单步调试过程中,在主程序内,“环境”窗口,数组自动显示:"a {7,12,0,3,2,9,5}"
一旦进入子程序,由于a[]不是子程序的内部变量,显示的数组a自动消失。
而这时正是需要查看数组内容(数值变动)的时刻。只能在“监视”窗口中,逐个添加a[0]、a[1]、……a[6],而且是竖排版,每个元素占一行。

求助:
有没有这种功能:不管是内部变量,还是外部变量。添加监视数组a,自动显示{7,12,0,3,2,9,5} ?

PS: printf免谈
  “内存查看”免谈
...全文
386 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2018-09-13
  • 打赏
  • 举报
回复
先放答案:在watch窗口中添加'a,7',参见https://stackoverflow.com/questions/972511/view-array-in-visual-studio-debugger和https://docs.microsoft.com/en-us/visualstudio/debugger/format-specifiers-in-cpp?view=vs-2015。哦对了,这是VC不是CFree,但印象中CFree是VC的皮?记不清楚了。另外这只是个小技巧,能不能自动完成就不确定了。

另外说说LZ免谈的东西,先是printf,如果LZ有工作,就知道如果有人给你写个printf会多有用了(其实是指log)。再是memory,某些山穷水尽的时候(比如没有log),那么memory可能就是不得不看的东西。
proof1 2018-09-13
  • 打赏
  • 举报
回复
引用 5 楼 qq_39850605 的回复:
你想调试的时候看,可以整个全局变量,或者静态局部变量。

为调试,改动程序较大。调试结束后,还得改回来。
自信男孩 2018-09-12
  • 打赏
  • 举报
回复
在子函数里,形参就是子函数内的变量。而实参传递到子函数内的是地址,因此在子函数里就需要用形参名来访问实参a。
幻夢之葉 2018-09-12
  • 打赏
  • 举报
回复
函数内已经不是数组了,而是指针int *,并没有记录它的长度。
调试时候可以加个打印函数,比如MyPrintf(int *a, int num);
SK_AJIE 2018-09-12
  • 打赏
  • 举报
回复
数组自动降级为指针
@风轻云淡_ 2018-09-12
  • 打赏
  • 举报
回复
你想调试的时候看,可以整个全局变量,或者静态局部变量。
只此冒泡君 2018-09-12
  • 打赏
  • 举报
回复
那免谈
proof1 2018-09-12
  • 打赏
  • 举报
回复
引用 1 楼 jianwen0529 的回复:
函数内已经不是数组了,而是指针int *,并没有记录它的长度。
调试时候可以加个打印函数,比如MyPrintf(int *a, int num);


想用debug方式,不太printf
函数操作源数组,只能指针/别名方式。不能视为自己的变量,调试时,显示比较麻烦。

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧