这有个简单的小程序:
#include <stdio.h> void main(void) { int i, b[10]; for (i=0;i<=10;i++) { b[i] = 0; } }
对于这个程序,你认为它的运行结果是? ( )
A.一切正常 B.下标越界 C.死循环
实际上,结果是“C”。纳闷吗? 原因是指针“i”在赋值为10时,由于超过了数组B的长度,于是指针继续偏移向下一位。而这次赋值就不在数组B里面了,而是将“i”(因为i在内存中紧跟在数组之后)赋值为0 。。于是你看到了,它死机了。。 所以,很多时候,高级语言不一定能解决所有问题。。只因为你看不到底层。因此,即使作为现代程序员(面向对象编程),学习汇编(面向机器编程)也是有必要的。
|