用指针将数组中的元素逆序存放
时间: 2023-09-18 17:05:55 浏览: 162
数组逆序存放指针.c
### 回答1:
可以使用两个指针分别指向数组的首尾元素,然后交换它们所指向的元素,直到它们相遇为止。下面是一个示例代码:
```c
void reverse_array(int *arr, int len) {
int *p1 = arr, *p2 = arr + len - 1;
while (p1 < p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
```
在这个函数中,`arr` 是指向数组首元素的指针,`len` 是数组的长度。首先,定义两个指针 `p1` 和 `p2`,分别指向数组的首尾元素。然后,通过一个循环,每次交换 `p1` 和 `p2` 所指向的元素,并将 `p1` 向后移动一位,将 `p2` 向前移动一位,直到 `p1` 和 `p2` 相遇为止,此时数组中的元素已经逆序存放了。
### 回答2:
通过使用指针,可以将数组中的元素逆序存放。假设有一个整型数组arr,包含n个元素。首先,定义两个指针,分别指向数组的起始位置和末尾位置,记为ptr_start和ptr_end。然后,通过循环的方式,将ptr_start指向的元素与ptr_end指向的元素进行交换,然后分别将ptr_start指针向后移动一位,ptr_end指针向前移动一位,直到ptr_start指针大于等于ptr_end指针时停止交换。这样就能够将数组中的元素逆序存放。具体的算法步骤如下:
1. 定义指向数组起始位置的指针ptr_start,指向数组末尾位置的指针ptr_end。
2. 进入循环,判断ptr_start指针是否小于ptr_end指针。
3. 如果条件成立,执行以下操作:
- 交换ptr_start指针和ptr_end指针所指向的元素。
- 将ptr_start指针向后移动一位。
- 将ptr_end指针向前移动一位。
4. 循环结束后,数组中的元素就被逆序存放了。
下面是一个示例代码的实现:
```cpp
#include <iostream>
using namespace std;
void reverseArray(int* arr, int n) {
int* ptr_start = arr;
int* ptr_end = arr + n - 1;
while (ptr_start < ptr_end) {
int temp = *ptr_start;
*ptr_start = *ptr_end;
*ptr_end = temp;
ptr_start++;
ptr_end--;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "原始数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
reverseArray(arr, n);
cout << "逆序数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
原始数组:1 2 3 4 5
逆序数组:5 4 3 2 1
通过以上的算法,我们可以逆序存放数组中的元素。
### 回答3:
要用指针将数组中的元素逆序存放,可以采取以下步骤:
首先,定义一个指向数组首元素的指针和一个指向数组末尾元素的指针。
然后,使用循环将这两个指针逐渐向中间靠拢,交换它们所指向的元素。具体步骤如下:
1. 定义一个整数变量i,令其初始值为0,表示数组的首元素的下标。
2. 定义一个整数变量j,令其初始值为数组长度减1,表示数组的末尾元素的下标。
3. 使用循环,当i小于j时,执行以下操作:
a. 使用临时变量temp,将指针p1所指向的元素的值存储起来。
b. 将指针p2所指向的元素的值赋给指针p1所指向的元素。
c. 将temp的值赋给指针p2所指向的元素。
d. 将指针p1后移一位,即p1++。
e. 将指针p2前移一位,即p2--。
f. 将i的值增加1,即i++。
4. 循环结束后,数组中的元素逆序存放完成。
上述步骤可以通过以下代码实现:
```c++
void reverseArray(int* arr, int size) {
int* p1 = arr; // 指向数组首元素的指针
int* p2 = arr + size - 1; // 指向数组末尾元素的指针
while (p1 < p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
```
调用该函数时,传入数组的首地址和数组的长度即可实现将数组元素逆序存放的功能。
阅读全文