有关指针

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:22:21
#include<stdio.h>
void main()
{
void inv(int x[],int n);
int i,arr[10],*p=arr;
printf("The original array:\n");
for(i=0;i<10;i++,p++)
scanf("%d",p);
printf("\n");
p=arr;
inv(p,10);
printf("The array has been inverted:\n");
for(p=arr;p<arr+10;p++)
printf("%d",*p);
printf("\n");
}

void inv(int *x,int n)
{
int *p,m,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;}
第4行跟第9行的*p=arr和p=arr,谁才是给指针变量赋值?
第9行的p=arr等价于p=&arr[0]?
void inv开头没直接for(;i<10;i++,p--)是因为i是指针型吗?要用同是指针的*P替代?请指教.

都是.其中第四行是定义时同时赋初值即指针变量的初始化.
第九行的目的是使p重新回到数组开头(即指向arr[1]),因为在输入完数据后,p的值为arr+9,要想打印出arr[0]到arr[9]必须使p再回到arr[0]. p=arr等价于p=&arr[0]没错!
你的最后一句话没看懂?好象不通.

初始化 说白了不就是赋值么 只不过是特殊值罢了

等价

程序没太细看 他应该是不想改变 指针X的位置 保持X的指向

用I来做指针的偏移 P用来限制I偏移的距离

*p=arr是指针初始化··
p=arr才是赋值··

等价的··