這有個簡單的小程序:
#include <stdio.h>
void main(void) {
int i, b[10];
for (i=0;i<=10;i++) {
b[i] = 0;
}
}
對于這個程序,你認(rèn)為它的運(yùn)行結(jié)果是? ( )
A.一切正常 B.下標(biāo)越界 C.死循環(huán)
實(shí)際上,結(jié)果是“C”。納悶嗎?
原因是指針“i”在賦值為10時,由于超過了數(shù)組B的長度,于是指針繼續(xù)偏移向下一位。而這次賦值就不在數(shù)組B里面了,而是將“i”(因?yàn)閕在內(nèi)存中緊跟在數(shù)組之后)賦值為0 。。于是你看到了,它死機(jī)了。。
所以,很多時候,高級語言不一定能解決所有問題。。只因?yàn)槟憧床坏降讓。因此,即使作為現(xiàn)代程序員(面向?qū)ο缶幊蹋,學(xué)習(xí)匯編(面向機(jī)器編程)也是有必要的。