第一章1 解释
程序员文章站
2022-04-14 16:43:46
...
注:此问题同学们做了大量回复,并且有很多同学的解释正确并且详尽,但由于我操作不当删除了一部分回复,这里我借助调试过程做出如下解释。对同学们的回复工作进行表扬。
补全代码如下:
sum(int a[ ], unsigned len);
main()
{
int a[3]={1,2,3};
printf("%lf",sum(a,0));
}
sum(int a[ ], unsigned len)
{
int i,sum = 0;
for (i=0; i<= len-1; i++)
sum += a[i];
return sum;
}
此处main函数中定义了数组a,拥有3个元素。
调试时第12行sum累加运算处设置断点(Visual studio 中快捷键为F9),然后调试运行(Visual studio 中快捷键为F5)
进入断点后状态如下图:
如同学们所说的一样,len-1的结果为一个非常大的正数,它是232-1。此时a[0]=1,sum=0。
继续运行(F5),
此时a[1]=2,sum=1。
继续运行(F5),
此时a[2]=3,sum=3。
继续运行(F5),
此时a[3]=1245064,a[3]未赋初值,当前值不正确,sum=6,sum的值的数组a的3个素之和(1,2,3)。
删除断点(F9),继续运行(F5),
for循环4145次停止,并报告出错,出错信息可理解为a[i]访问越界。
推荐阅读
-
全面解释Java中的serialVersionUID
-
div+css布局必须要知道的css条件注释理论及实践第1/2页
-
mysql #1062 –Duplicate entry '1' for key 'PRIMARY'
-
Java parseInt解释加方法示例
-
asp.net5中的用户认证与授权(1)
-
iOS开发项目- 基于WebSocket的聊天通讯(1)
-
(解释文)My SQL中主键为0和主键自排约束的关系
-
Apple Watch拆机详解S1 芯片:运行内存 512MB
-
详解Java虚拟机30个常用知识点之1——类文件结构
-
基于java下载中getContentLength()一直为-1的一些思路