C语言的数组必须是静态的。换而言之,数组的大小必须在程序运行前就被确定下来。
#include
void main(){
int x[3];
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] = k;
y = k+ 100;
for(k=0;k<4;k++)
printf("x[%d]=%d ",k,x[k]);
}
运行后输出一下结果:
[url=http://img.blog.163.com/photo/LsxQGjUJOsgFWTKYFJYEkQ==/879609302221077638.jpg][/url]
程序中,访问x[3]实际上是非法的。
注意:C语言并不检验数组边界,因此,数组的两端都有可能越界而使其他变量的数据甚至程序代码被破坏。
因此对于C语言来说,数组的边界检验是程序员的职责。
|