C语言用指针实现逆序操作
时间: 2024-05-01 22:16:19 浏览: 52
下面是用指针实现逆序操作的C语言代码:
```c
#include <stdio.h>
void reverse(int *arr, int len) {
int *p1 = arr, *p2 = arr + len - 1;
while (p1 < p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(int);
printf("原数组:");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
reverse(arr, len);
printf("\n逆序数组:");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在函数`reverse`中,我们定义了两个指针`p1`和`p2`,它们分别指向数组的头部和尾部。然后我们通过循环交换它们指向的元素,直到它们相遇为止,即完成了数组的逆序操作。在主函数中,我们调用了`reverse`函数,并输出了逆序后的数组。
相关问题
c语言使用指针完成逆序输出
可以使用指针来实现一个逆序输出的函数,具体实现如下:
```c
#include <stdio.h>
void reverse_print(char *str){
if(*str == '\0')
return;
reverse_print(str+1); // 递归调用
printf("%c", *str);
}
int main(){
char str[] = "hello world";
reverse_print(str);
return 0;
}
```
在这个例子中,使用递归的方式来实现逆序输出。函数 `reverse_print` 传入一个指向字符串的指针 `str`,如果当前指针指向的字符是字符串的结束符 `\0`,则返回。否则,递归调用 `reverse_print` 函数传入指针 `str+1`,也就是指针指向下一个字符的位置,直到指针指向字符串结束符。最后,再依次输出每个字符即可。
C语言使用指针实现数组元素逆序存放
可以使用指针实现数组元素逆序存放,具体步骤如下:
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
```
阅读全文