C语言中的指针问题,不是很长 求大佬解!

有个让数组中的数倒过来输出的程序:#include"stdio.h"#include"stdlib.h"voidinv(int*x,intn){int*p,temp,*i... 有个让数组中的数倒过来输出的程序:
#include"stdio.h"
#include"stdlib.h"
void inv(int *x,int n)
{
int *p,temp,*i,*j,m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)
{
temp=*i;*i=*j;*j=temp;
}
return;
}

int main(int argc, const char*argv[])
{
int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("The original array:\n");
for(i=0;i<10;i++)
printf("%d\n",a[i]);
printf("\n");
inv(a,10);
printf("The array has benn inverted:\n");
for(i=0;i<10;i++)
printf("%d\n",a[i]);

return 0;

}

请重点讲解下这个:i=x;j=x+n-1;p=x+m; 我不是很懂这行代码的含义,求详解!
为什么for循环里面是i<=p; i和p不都是指向数组的吗
展开
 我来答
Arthur128ve
2018-10-13 · TA获得超过178个赞
知道答主
回答量:190
采纳率:76%
帮助的人:21.9万
展开全部
i和j是x的辅助指针,代替指针x完成一系列动作,
例如传入的是a,实际上就是i = a(数组的首地址),j = a+10-1(数组尾元素地址)
因为是位置颠倒,所以只需要取值数组元素的一半即可,m = (10-1)/2=>4(向下取整),p=a+4(即数组元素a[5]的地址)
看完别望采纳,谢谢!
追问
但是它那个for循环语句里面的 i<=p 是什么意思 ,你看 i 和 p不是取了 a[0] 和 a[5]的地址吗,那不就意思是  3<0了 ...没懂
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式