使用指针的方式实现数组逆序

本文介绍了一种利用指针实现数组逆序的方法。通过定义两个指针分别指向数组的首尾,并逐步交换对应的元素值,最终实现了数组的逆序。文章提供了完整的C语言代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在前面,我们通过让数组首位交换的方式,实现了数组的逆序,那,在学习了指针之后,我们该如何运用指针实现数组的逆序呢。

同样的,我们的思路还是使用首位对应交换的方式,只不过,在此时,我们可以选用指针代替数组的首尾元素了

 

#include <stdio.h>

 

int main()

{

int a[10] = {1,2,3,4,5,6,7,8,9,10};

int *p1 = a;                              // 指向数组的第一个元素下标

int *p2 = a + sizeof(a)/sizeof(a[0]) - 1;         // 求出最后一个元素的下标

 

while (p1 < p2)

{

int tmp = *p1;

*(p1++) = *p2;

*(p2--) = tmp;

}

int i;

for (i = 0; i < 10; i++)

{

printf ("%4d", a[i]);

}

printf ("\n");

return 0;

}

 

程序里,我们的大致过程还是和以前一样,没有什么多大的变化的,唯一不同的是我们使用了指针代替了数组,使用指针代替数组的好处就是,当数组里的元素发生变化时,我们的指针所指的地址可是不会变化,这就使我们的操作变得稳定。在使用sizeof求最后一个元素的下标中,sizeof这个关键字,是用来求空间大小的一个关键字,它能告诉我们,我们所使用的一个变量所占的空间大小。因为sizeof(a)求出了整个数组所占用的空间,当/它的类型时,我们就可以得到数组a的长度了,同时由于数组的下标都是从0开始的所以在计算最后一个元素的下标时,一定要记得减一。

最后显示的结果为:  10   9   8   7   6   5   4   3   2   1

是不是已经完全逆序过来了呢。动手来操作一下吧!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值