修正两个错误即可:
1、野渗fun函数里面两个for循环控制变量有问题,应改为下面这种形式:
for(i=0i<2i++)
for(j=0j<Mj++)
{
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语言中在调用函锋悉数的时候会依懒一个“栈”这种数据结构的性质的内存。
首先你格式错了,一般都是这样#include<stdio.h>
void
main()
{
主程序
}
注意引号那些要在英文模式下输,象一楼的程序就是对的,
其次这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable
Fils、Include
Files、Library
Files、Source
Files”的路径。很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。原因有很多,比如说:清薯①除以零②数组越界:int a[3]a[10000000]=10③指针越界:int * pp=(int *)malloc(5 * sizeof(int))*(p+1000000)=10④使用已经释放的空间:int * pp=(int *)malloc(5 * sizeof(int))free(p)*p=10⑤数组开得太大,超出了栈的范围,造成栈溢出扰辩:int a[100000000]
根据经验,大多数情况是缓正缺因为程序员对内存的理解不透彻导致错误应用引起的~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)