大问题!!!!!!!!!!!!
- 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。