c语言非法访问内存?

编译通过了 但运行的时候显示非法访问内存?这怎么解决啊 大一新生求解答。

img

C语言允许直接操控内存,这有优点也有缺点。在C语言中,我们会给变量分配空间来存储数据,非法内存访问的意思就是,不是分配给你的空间,你却用了,这就是非法的。简而言之,就是变量访问越界了。

你没有给数组a分配内存空间,主函数中的参数第一是:还能这样传,第二即使可以这样定义,a[]实际上是指针,并不是数组。

两次 for 循环,都越界了,仔细看看,例如第一次,当i 为n-1 会如何