void move(int * p, int m, int n)
{
int * q, *r;
r = &p[m-1];
for (q=p+m-1; q>p; --q)
{
*q = *(q-1);
}
*p = *r;
--n;
if(n>0)
move(&p[0], m, n);
}
请问这样也是野指针吗, 我让他指向了最后一个元素
这里 r 虽然不是野指针,但在后面的for(){} 循环里, *q = *(q-1); 这条语句在执行时,循环改变了数组最后一位的元素的值。
指向最后一个元素应该是 r = p + m - 1; 这样不是野指针
m是数组长度,这么写没问题
这样不是野指针,指向了给定的地址