免费注册 查看新帖 |

Chinaunix

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

[C] 大家帮我看看这个程序! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-13 14:13 |只看该作者 |倒序浏览
很奇怪,大家帮我说说这个程序运行为什么没又发生段错误???

  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int i;
  5.         int a[10];

  6.         a[0] = 0;
  7.         a[10] = 10;

  8.         for(i = 0;i < 11;i++)
  9.                 printf("a[%d] = %d\n",i,a[i]);

  10.         return 0;
  11. }
复制代码

结果却是:

  1. a[0] = 0
  2. a[1] = 1073832920
  3. a[2] = 1
  4. a[3] = 0
  5. a[4] = 1107383425
  6. a[5] = 134513318
  7. a[6] = 134513528
  8. a[7] = 1108544020
  9. a[8] = -1073750552
  10. a[9] = 134513221
  11. a[10] = 10
复制代码

论坛徽章:
0
2 [报告]
发表于 2007-11-13 14:16 |只看该作者
这样用很危险, 但是不是每次都会发生错误

论坛徽章:
0
3 [报告]
发表于 2007-11-13 14:22 |只看该作者
原帖由 ypxing 于 2007-11-13 14:16 发表
这样用很危险, 但是不是每次都会发生错误


哦,不知道数组定义后在内存中是怎么样分配给地址的,它的有效范围不是 0 到 9 么?它会以什么样的方式判断有效的数组上限的呢?

论坛徽章:
0
4 [报告]
发表于 2007-11-13 14:23 |只看该作者
不会做判断

原帖由 shiner 于 2007-11-13 14:22 发表


哦,不知道数组定义后在内存中是怎么样分配给地址的,它的有效范围不是 0 到 9 么?它会以什么样的方式判断有效的数组上限的呢?

论坛徽章:
0
5 [报告]
发表于 2007-11-13 14:26 |只看该作者

回复 #4 ypxing 的帖子

恩... 我好像以前在C中碰到过一个数组越界的问题
具体在编译时还时运行时忘了!

论坛徽章:
0
6 [报告]
发表于 2007-11-13 14:50 |只看该作者
是不是这样, 在没有对变量赋值,变量的地址里面都是系统内存中原来存在的东西,

你把程序 多次执行,会发现正值都 没有发生变化,  

看这个程序   
#include <stdio.h>
  main ()

            {       int   a,b;
                      printf("% d       %d", a,b);;
              }

论坛徽章:
0
7 [报告]
发表于 2007-11-13 14:56 |只看该作者

回复 #1 shiner 的帖子

你再运行下这个程序也许能看出点东西出来。
#include <stdio.h>

int main(void)
{
        int i;
        int a1[10];
        int a[10];
        int a2[10];

        a[0] = 0;
        a[10] = 10;
for(i =0; i<10;i++)
{
  a1 = i;
  a2 = i;
}

        for(i = 0;i < 11;i++)
                printf("a[%d] = %d\n",i,a);

        return 0;
}

论坛徽章:
0
8 [报告]
发表于 2007-11-13 15:07 |只看该作者
原帖由 shiner 于 2007-11-13 14:22 发表


哦,不知道数组定义后在内存中是怎么样分配给地址的,它的有效范围不是 0 到 9 么?它会以什么样的方式判断有效的数组上限的呢?


C 是直接读写内存的,不像C++/Java,程序想好了再写,出现这种事是因为你运气好。。

论坛徽章:
0
9 [报告]
发表于 2007-11-13 15:07 |只看该作者
数组访问越界,很危险,但不是每次都会出错

论坛徽章:
0
10 [报告]
发表于 2007-11-13 15:14 |只看该作者
谢谢各位热心的指点了~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP