第17周 利用指针逆序输出数组

来源:互联网 发布:适合高中生的淘宝店铺 编辑:程序博客网 时间:2024/05/18 03:01
#include <iostream>using namespace std;const int N=100;int main(){    int a[N],n,*p,*q;    cin>>n;    for(p=a; p<a+n; p++)        cin>>*p;    p=a;    q=a+n-1;    while(p<q)    {        int r=*p;        *p=*q;        *q=r;        p++;        q--;    }    for(p=a; p<a+n; p++)        cout<<*p<<' ';    cout<<endl;    return 0;}

运行结果:

总结:由于懈怠和沉迷,我对指针这部分的知识掌握的很不好,即使是这么一个简单的题目也让我绞尽脑汁,仍然没做出来,只能参考了同学的博客然后自己单步执行了一下,刚看到代码时,对于for语句中的判断条件p<a+n和while循环的部分很不理解,经过单步执行,我明白了第一个for语句就是用来输入a[N]数组的,只是采用的指针的形式,是对a[N]元素对应的存储空间的操作,没有直观体现其数据变化;程序中while语句部分,是讲数组逆序的关键,通过之前对p,q的赋值,是p为a[N]第一个元素对应的地址,q为第n个元素对应到地址,通过while循环中的语句逐渐向中间靠拢,同时交换数值,由于p,q对应的地址是不变的,因此可做判断条件。

0 0