P238 例8.8 将数组a中n个整数按相反顺序存放(用指针变量)
#include<stdio.h>
int main() {
void reverse(int* p, int n);
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
printf("原来的数组为:");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
reverse(a, 10);
printf("\n逆序存放后的数组为:");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
return 0;
}
void reverse(int* p, int n) {
int* left = p;//左端点
int* right =p + n - 1;//右端点
int m = (n - 1) / 2, i = 0;//数组长度的一半,也就是逆序的次数
while (i <= m) {
int tmp = 0;
tmp = *left;//左右端点互换
*left = *right;
*right = tmp;
i++;
left++;//左端点向右移
right--;//右端点向左移
}
}
运行结果: