大_风

导航

2012年8月14日 #

探讨变量的内存分配方式

摘要: 在《C陷阱和缺陷》的第三章第六小节中,有以下代码段和描述: 1: int i,a[10]; 2: for(i=1;i<=10;i++) 3: a[i]=0; 描述为:以上代码段本意是要设置数组a中所有元素为0,却产生了一个出人意料的“副效果”。for语句的比较部分本来是i<10,却写成了i<=10,因此实际上并不存在的a[10]被设置为0,也就是内存中在数组a之后的一个字word的内存被设置为0。如果编译这段代码的编译器按照内存地址递减的方式来给变量分配内存,那么内存中数组a之后的一个字实际上是分配给了整形变量i。此时,本来循环计数器i的值为10,循环体内将并不存在... 阅读全文

posted @ 2012-08-14 16:36 大_风 阅读(389) 评论(0) 推荐(0) 编辑