声明的数组越界,为何还能正确运行,很怪,没有几行代码,大家看看!!!!
#include <stdio.h>
! C, X* d, ^' Y7 ^#include <stdlib.h>4 D( |. l r4 p- c+ r
$ M& H/ X& ^9 Q9 Y' f+ v
#define BIGNUM 50! Z" N& t8 j b" E3 U
6 N K/ v" W$ B% c6 ]void index_to_the_moon(int arr[]);* ?9 j7 ?& w% m6 h" L
% g" c4 ^6 B1 H8 n
int main(void)
1 ]" f# x0 r% [{
5 }& q. b5 e I7 w int intary[10];( N# {8 T! k& n0 y' a
index_to_the_moon(intary);
/ Y2 I% |1 k2 Z6 A- N+ x) R, X$ p8 {3 j3 X6 E
exit(EXIT_SUCCESS);
' i. k! I1 x* o9 _( j' ^}
! L* A+ v; A) Z$ @# `
; Q: z1 g0 O2 I* {- V( _void index_to_the_moon(int arr[])
; ]8 X. W+ O! P/ S. Y; c- u{' M8 }& x7 y) n1 ?+ j5 m- c% `
int i;
# _. \% P+ N ?! j: K& u- c7 Z for(i=0;i<BIGNUM;i++)
! C! B2 H# E& y% I* S6 S$ k {" U/ b2 _* w/ l# ]2 ]* s
arr=i;
! z5 ^! w* J* @ printf("%d\n",arr);
0 u1 w# @. i) L }+ t+ i) Z. H2 Z5 C% O9 u
}
5 b$ @4 D0 p+ y$ C" Y" }* Z- [0 \$ d: m# O" }. n4 U
我用make debugme命令编译此程序后,然后键入./debugme来执行该程序,应该产生一个段错误(segmentation default).为何我的程序还能显示出来个50个数字,从0到49????