编写程序,以指针的方式,就地逆置一维数组
时间: 2023-04-24 13:02:08 浏览: 125
以下是一种用指针实现就地逆置一维数组的程序:
```c
#include <stdio.h>
void reverse(int *arr, int size) {
int *p1 = arr;
int *p2 = arr + size - 1;
while (p1 < p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(int);
printf("Original array: ");
for (int i = ; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
reverse(arr, size);
printf("Reversed array: ");
for (int i = ; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return ;
}
```
这个程序中,`reverse` 函数接受一个指向数组首元素的指针和数组的大小,然后用两个指针 `p1` 和 `p2` 分别指向数组的首尾元素,不断交换它们指向的元素,直到 `p1` 和 `p2` 相遇。这样就完成了数组的就地逆置。
在 `main` 函数中,我们定义了一个整型数组 `arr`,并计算出它的大小。然后我们先输出原始数组,调用 `reverse` 函数逆置数组,再输出逆置后的数组。