1.用指针实现元素倒置
int main()
{
int a[5]={1,2,3,4,5};
int *p1=a,*p2=a+4,*p=a;
while(p1<p2) //比较地址就可以
{
int t = *p1; *p1=*p2; *p2=t;
p1++;p2--;
}
for(int i=0;i<5;i++,p++) //使用p++来访问
cout<<*p<<' ';
return 0;
}
2.指针找数字最大最小值
void max_min_value(int *arr,int n,int *max,int *min)
{
int *p,*arr_end;//p为判断循环开始结束标志
arr_end=arr+n;//最后一个元素
*max=*min=*arr;//都是从第一个元素开始找
for(p=arr+1;p<arr_end;p++)
{
if(*p>*max) *max=*p;
else if(*p<*min) *min=*p;
}
}
int main()
{
int num[10],*p=num,max,min;
for(int i=0;i<10;i++) cin>>*(p+i);
cout<<endl;
max_min_value(p,10,&max,&min);
cout<<"max="<<max<<endl;
cout<<"min="<<min<<endl;
return 0;
}
3.利用指针对数组降序排序
void sortd(int *arr, int n)
{
int *p,*q,*max,t;
for(p=arr;p<arr+n-1;p++) //比较n-1次
{
max=p;
for(q=p+1;q<arr+n;q++) //每次比较都要比到最后一个元素
{
if(*q>*max)
{
t=*q; *q=*max; *max=t;
}
}
}
}
int main()
{
int arr[5]={3,5,4,7,5};
sortd(arr,5);
int *p=arr;
for(int i=0;i<5;i++) cout<<*(p+i)<<' ';
return 0;
}