免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1416 | 回复: 2
打印 上一主题 下一主题

数组赋值问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-23 15:02 |只看该作者 |倒序浏览
我在C程序里有如下代码段:
int a[] = {1,2,3,4,5,28,4};
在gdb查看其内容时显示为:
(gdb) p a
$1 = {1073786862, 1073832276, 1073832640, 134522764, 1, 134513332, 1074942114}
我在程序里对每位赋值结果也是一样的,有那位老师能指教一下,谢谢!

论坛徽章:
0
2 [报告]
发表于 2007-03-23 15:40 |只看该作者

  1. 1 #include "stdio.h"
  2. 2  
  3. 3 int main(){
  4. 4          int a[] = {1,2,3,4,5,28,4};
  5. 5         return 0;
  6. 6 }
复制代码

  1. (gdb) b 4
  2. Breakpoint 1 at 0x8048366: file array_assign.c, line 4.
  3. (gdb) run
  4. Starting program: /home/project/example/array_assign
  5. Reading symbols from shared object read from target memory...done.
  6. Loaded system supplied DSO at 0xb85000

  7. Breakpoint 1, main () at array_assign.c:4
  8. 4               int a[] = {1,2,3,4,5,28,4};
  9. (gdb) p a
  10. $1 = {-1074379060, -1074379208, 134513566, 7417844, 1, 0, 7417844}
  11. (gdb) s
  12. 5               return 0;
  13. (gdb) p a
  14. $2 = {1, 2, 3, 4, 5, 28, 4}
  15. (gdb)

复制代码

在第4行设置断点的话,我觉得应该是这一句还没有执行,所以数组中的值是任意的。
不知道这样理解正不正确

论坛徽章:
0
3 [报告]
发表于 2007-03-23 17:01 |只看该作者
Breakpoint 1, main () at array_assign.c:4
4               int a[] = {1,2,3,4,5,28,4};


程序到这一个地方时,a数组初始化这个工作还没开始
你再运行下一步再p一下就有正确的结果出来了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP