C语言使用指针实现数组元素逆序存放
时间: 2023-11-27 19:52:08 浏览: 372
可以使用指针实现数组元素逆序存放,具体步骤如下:
1. 定义一个数组,并初始化数组元素。
2. 定义两个指针变量,分别指向数组的首地址和尾地址。
3. 使用 while 循环,交换首尾指针所指向的元素,并将首指针向后移动一位,尾指针向前移动一位,直到首尾指针相遇或者首指针大于等于尾指针为止。
下面是代码示例:
```c
#include <stdio.h>
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
int len = sizeof(arr) / sizeof(int);
int *p1 = arr; // 指向数组首地址的指针
int *p2 = arr + len - 1; // 指向数组尾地址的指针
while(p1 < p2)
{
int temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
// 打印逆序后的数组
for(int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:
```
8 7 6 5 4 3 2 1
```
相关问题
用c语言写 指针将数组中的元素逆序存放
以下是用C语言实现指针将数组中的元素逆序存放的代码:
```c
#include <stdio.h>
void inv(int *x, int n);
int main() {
int i, a[10] = {3, 7, 9, 11, 0, 6, 7, 5, 4, 2};
printf("The original array:\n");
for (i = 0; i < 10; i++) {
printf("%3d", a[i]);
}
printf("\n");
inv(a, 10);
printf("The array has been inverted:\n");
for (i = 0; i < 10; i++) {
printf("%3d", a[i]);
}
printf("\n");
return 0;
}
void inv(int *x, int n) {
int i, tem;
for (i = 0; i < n / 2; i++) {
tem = x[i];
x[i] = x[n - i - 1];
x[n - i - 1] = tem;
}
}
```
如何用C语言实现一维数组元素的逆序存放操作?
在C语言中,要实现一维数组元素的逆序存放,可以使用两个指针,一个指向数组的开始,另一个指向数组的结束。然后通过交换这两个指针所指向的元素,逐渐向中间移动,直到它们相遇。下面是一个简单的示例:
```c
#include <stdio.h>
void reverseArray(int arr[], int size) {
if (size > 1) { // 避免空数组
int start = 0; // 指向数组开头
int end = size - 1; // 指向数组结尾
while (start < end) {
// 交换元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 移动指针
start++;
end--;
}
}
}
int main() {
int myArray[] = {1, 2, 3, 4, 5};
int length = sizeof(myArray) / sizeof(myArray[0]);
printf("Original array: ");
for (int i = 0; i < length; i++) {
printf("%d ", myArray[i]);
}
reverseArray(myArray, length);
printf("\nReversed array: ");
for (int i = 0; i < length; i++) {
printf("%d ", myArray[i]);
}
return 0;
}
```
在这个例子中,`reverseArray`函数接受一个整型数组和它的长度,然后内部通过循环实现了逆序存放。运行`main`函数可以看到原始数组和逆序后的数组。
阅读全文