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]