用指针实现数组的逆序存储
时间: 2024-12-15 21:22:57 浏览: 15
用指针实现数组的逆序存储通常涉及到两个指针,一个指向数组的开始(即第一个元素),另一个指向数组的结束(即最后一个元素)。通过交换这两个指针所指向的元素,然后分别移动它们,直到两个指针相遇,这样就完成了整个数组的逆序。
以下是步骤的一个简单描述:
1. 初始化两个指针 `start` 和 `end`,分别指向数组的第一个元素和最后一个元素。
2. 使用一个临时变量 `temp` 来暂存元素值,因为不能直接交换指针引用的地址。
- `temp = arr[start];`
3. 将数组中 `start` 和 `end` 指向的元素交换位置:
- `arr[start] = arr[end];`
- `arr[end] = temp;`
4. 更新指针的位置,将 `start` 向右移动一位,`end` 向左移动一位:
- `start++;`
- `end--;`
5. 当 `start` 还小于或等于 `end` 时,重复上述过程,否则逆序已完成。
这个过程可以用循环来简化:
```c++
void reverseArray(int* arr, int start, int end) {
while (start < end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
```
相关问题
(c语言)用指针遍历数组,实现逆序存储
在C语言中,使用指针遍历数组并实现逆序存储,通常会创建两个指针,一个指向数组的开始(即首元素),另一个指向数组的结束。然后我们逐个交换它们所指向的元素,直到两个指针相遇。以下是简单的示例:
```c
#include <stdio.h>
void reverseArray(int *arr, int n) {
// 指向数组开头的指针
int start = 0;
// 指向数组结尾的指针,初始位置比数组长度小1
int end = n - 1;
while (start < end) {
// 交换start和end位置的元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 移动指针
start++;
end--;
}
}
int main() {
int array[] = {1, 2, 3, 4, 5};
int size = sizeof(array) / sizeof(array[0]);
printf("Original array: ");
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
reverseArray(array, size);
printf("\nReversed array: ");
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
return 0;
}
```
在这个例子中,`reverseArray`函数接受一个整型数组和其大小作为参数。通过while循环,它不断地将首尾元素交换,直到整个数组都按照相反的顺序排列。
自定义函数实现将一个数组逆序存储,在主函数中输入数组数据并输出结果。
好的,以下是实现该功能的C++代码:
```cpp
#include <iostream>
using namespace std;
void reverseArray(int arr[], int len) {
int left = 0, right = len - 1;
while (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
int main() {
int arr[10];
cout << "请输入10个整数:" << endl;
for (int i = 0; i < 10; i++) {
cin >> arr[i];
}
reverseArray(arr, 10);
cout << "逆序存储后的数组为:" << endl;
for (int i = 0; i < 10; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
首先定义了一个名为 `reverseArray` 的函数,该函数接受一个整型数组和数组的长度作为参数,函数内部使用双指针的方式将数组逆序存储。
在主函数中,首先定义一个长度为10的整型数组 `arr`,接着使用循环依次读入用户输入的10个整数。然后调用 `reverseArray` 函数将数组逆序存储,最后输出结果。
注意,为保证程序的健壮性,应当在输入数据时对用户输入进行校验,确保用户输入的是合法的整数。
阅读全文