C 的数组越界问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 16:41:37
int func2();
int func1()
{
int pp=0;
if(pp<7)
return func2(pp);
return 0;
}
int func2(int pp)
{
int p[7];
p[pp]=0;
return 0;
}
这段代码在p[pp]=0;这行会不会越界了? 程序写的有什么问题? 谢谢各位了。

声明func2()时里面要加参数.即第一句改为:int func2(int);

会不会越界跟你在func2里面传入的值pp有关系,如果pp<=6就不会.
另外,func2中的pp不一定就是func1中的pp啊,你如果在别处调用了func2(19),肯定会越界了.

这些代码没有意义。在func2里面,p[]这个数组是局部的,不是全局的。

第一句int func2();改为int func2(int pp);

int func1()中的pp不会变化呀!
你具体想干什么?

1. p[pp] 不会越界,因为pp最大就是6 ,前提是只有func1()调用func2().
2. 函数申明有问题:int func2(); ---> int func2( int p );
3. 这段代码我没看懂是做什么的,貌似无论如何,func1()的返回值都是0 ...