扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
for(i=1;i=9;i++)
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了金昌免费建站欢迎大家使用!
数组的下标是从0开始的,i--后就会出现负数啊,可定越界
修正两个错误即可:
1、fun函数里面两个for循环控制变量有问题,应改为下面这种形式:
for(i=0;i2;i++)
for(j=0;jM;j++)
{
if(a[i][j]max)
max=a[i][j];
}
2、输出的时候也有问题,fun函数返回值是int,所以应该是:
printf("\nThe value of function is:%d\n",fun(arr));
扩展资料:
Runtime Error错误解析
1、buffer overflow
缓冲区溢出,缓冲区溢出一般就是你的程序中数组开小了,产生了越界访问,比如:定义int a[100]
此时你引用了a[1000]就很可能出现运行时错误。“缓冲区”一般指的就是程序中定义的一个数组,这片连续的内存空间用以存放一些要处理的数据。
值得一提的是缓冲区溢出漏洞就连成熟的程序员都有可能不小心忽视它导致巨大的损失,所以现在写代码一定要养成深思熟虑,考虑好每一个值的范围,以防越界。之所以存在缓冲区溢出漏洞,一个主要的原因是C语言并不对数组下标进行界限检查。
2、stack overflow栈溢出
栈这个东西在操作系统中通常用来维护一个函数的调用,C语言中在调用函数的时候会依懒一个“栈”这种数据结构的性质的内存。
是不是调用函数的形参过多?一般来说,函数的参数都存在栈中,当然也可以申请堆。如果形参过多就会发生栈溢出,用递归的时候发生较多。栈溢出会发生段错误,也就是可能会占用系统的栈(好像不能访问)。。。
错了给我说……
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流