老牛来学习 发表于 2020-3-6 22:49:54

C语言逻辑

#include<stdio.h>

int main()
{
    int i,*p,*q,t,a = {1,3,5,7,9,11,13,15,17,19};
    for(p = a,i = 0;i < 10;i++)
    {
      printf("%4d",*(p+i));
    }
    printf("\n");
    q = a + 9;
    while(p < q)    //从这开始底下的代码不应该是第一个和最后一个换第二个和倒数第二个换吗?为什么输出的是顺序换;没看懂里面的逻辑,大佬帮解释下;
    {
      t = *p;
      *p = *q;
      *q =t;
      p++;
      q--;
    }
    for(p = a;p - a < 10;p++)
    {
      printf("%4d",*p);
    }
    printf("\n");
}

sanguine_boy 发表于 2020-3-6 23:10:33

这个不就是逆序输出吗

chxchxkkk 发表于 2020-3-7 00:48:02

p指向第一个,q指向最后一个,交换后,p++指向第二个,q--指向倒数第二个,直到 p=q两个指针指向同一个位置

墨羽岚 发表于 2020-3-7 09:49:05

你一个一个反过来和整体反过来结果不是一样的吗。。。{:10_247:}
页: [1]
查看完整版本: C语言逻辑