admin 发表于 2012-9-10 15:55:10

c语言数组越界

C语言的数组必须是静态的。换而言之,数组的大小必须在程序运行前就被确定下来。

#include
void main(){
    int x;
    int y;
    int k;
    printf("k:%p y:%p x:%p x+1:%p x+2:%p",&k,&y,x,x+1,x+2);//输出地址
    for(k=0;k<4;k++)
      x = k;
    y = k+ 100;
    for(k=0;k<4;k++)
      printf("x[%d]=%d      ",k,x);
}
运行后输出一下结果:


程序中,访问x实际上是非法的。
注意:C语言并不检验数组边界,因此,数组的两端都有可能越界而使其他变量的数据甚至程序代码被破坏。
         因此对于C语言来说,数组的边界检验是程序员的职责。

页: [1]
查看完整版本: c语言数组越界