数组元素的逆序中,主要注意指针传递过去的值,如果指向的元素改变了,那么指针保存的原来的数据也将被改变。
#include <stdio.h>
#include <stdlib.h>
void reverse(int *arr,int num);
int main()
{
int i=0;
int myarr[10]={1,3,5,7,9,11,13,17,19,21};
printf("最初的数组元素为:\n");
for(i=0;i<10;i++)
printf("%3d",myarr[i]);
printf("\n");
int *ip=myarr;
reverse(ip,10);
printf("操作后的数组元素为:\n");
for(i=0;i<10;i++)
printf("%3d",myarr[i]);
printf("\n");
system("pause");
return 0;
}
void reverse(int *arr,int num)
{
int *ip1=arr; //用*ip1保存数组首地址
int *ip2=arr+num-1; //用*ip2保存数组最后元素的地址
int i=0;
printf("\n");
while(i<num/2) //循环结束条件为到达最中间的元素
{
//1给中,2给1,中给2
int tempt=*ip1;
*ip1=*ip2;
*ip2=tempt;
ip1++; //往中间方向移动指针
ip2--;
i++;
}
}