qq815798461 发表于 2017-12-5 23:23:07

关于c语言一点很基础的算法问题


这里有个fun函数 int fun(int*p1,int*p2)
{          
      if(*p1>*p2){
          int temp=*p1;
          *p1=*p2;
          *p2=temp;}
}就是比较大小 然后交换数值。然后下面第一个就成功 第二个就失败。 两个区别就是先后顺序不同

       fun(p,p+1);
      fun(p,p+2);       
       fun(p+1,p+2);

    fun(p,p+1);
    fun(p+1,p+2);
   fun(p,p+2);       
       

3-3 发表于 2017-12-5 23:51:51

楼主也说了,这是交换数值的问题。你可以假设 *p = 3, *(p+1) = 2, *(p+2) =1 ,这样代入进行试一下, 你就会发现,顺序的变换对于交换数值的处理会有很大的影响。 在你第一种情况下,每次调用都进行了数值交换,但是在第二种情况下,第三句并没有执行,因为*p 已经小于*(p+2)了,所以第三个语句不会执行的。
页: [1]
查看完整版本: 关于c语言一点很基础的算法问题