读书人

大有关问题!

发布时间: 2012-02-25 10:01:48 作者: rapoo

大问题!!!!!!!!!!!!

C/C++ code
#include <stdio.h>//问一             mai()            {              int a=0;              printf("%d\n",sizeof(a));             }           // 结果为什么是4          // 问二             #include <stdio.h>            #include <malloc.h>            main()           {  int a[2];              int i;               for(i=0;i<8;i++)a[i]=1;              for(i=0;i<8;i++)              printf("%d\t",a[i]);               printf("\n");                         }         // 结果1  1   1   1   1   1   1    1//        为什么可以这样子呀,明显是越过数组限额了呀!


[解决办法]
// 结果为什么是4
-------
int的长度

//为什么可以这样子呀,明显是越过数组限额了呀!
-------
编译器不会帮你检查越界与否,要你自己去检查的
[解决办法]
越界不一定运行算误,只有破坏了关键数据才会出错.比如函数的返回地址.
[解决办法]
为什么不是4呢?int类型就占4个字节。


数组越界后,输入的内容存到数组后面的存储单元中,所以输出的是1。

读书人网 >C语言

热点推荐