C 的数组越界问题
来源:百度知道 编辑:UC知道 时间:2024/09/24 04:47:00
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;这行会不会越界了? 程序写的有什么问题? 谢谢各位了。
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 ...