使用指针的方式实现数组逆序 | 您所在的位置:网站首页 › 用函数将数组逆序 › 使用指针的方式实现数组逆序 |
在前面,我们通过让数组首位交换的方式,实现了数组的逆序,那,在学习了指针之后,我们该如何运用指针实现数组的逆序呢。 同样的,我们的思路还是使用首位对应交换的方式,只不过,在此时,我们可以选用指针代替数组的首尾元素了
#include
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 是不是已经完全逆序过来了呢。动手来操作一下吧! |
CopyRight 2018-2019 实验室设备网 版权所有 |