atxxfs 发表于 2018-7-20 10:49:13

C语言指针求助

void main()
{
        int a,b,*x,*y;
        void fun(int *pa,int *pb);//fun函数的声明

        a = 2;
        b = 3;
        x = &a;
        y = &b;

        fun(x,y);
}

void fun(int *pa,int *pb)
{
        int temp;

        temp = *pa;
        *pa = *pb;
        *pb = temp;
}

程序执行完后,对调了a、b的值。a = 3,b = 2
但是我在fun函数体内加上*pa++;*pb++;仍然是a3b2,请问为什么,谢谢。

BngThea 发表于 2018-7-20 10:54:37

把你加上后置++的代码也发上来看一下

atxxfs 发表于 2018-7-20 12:05:16

BngThea 发表于 2018-7-20 10:54
把你加上后置++的代码也发上来看一下

void main()
{
      int a,b,*x,*y;
      void fun(int *pa,int *pb);//fun函数的声明

      a = 2;
      b = 3;
      x = &a;
      y = &b;

      fun(x,y);
}

void fun(int *pa,int *pb)
{
      int temp;

      temp = *pa;
      *pa = *pb;
      *pb = temp;

                *pa++;
                *pb++;
}

关键是感觉 发表于 2018-7-20 12:59:24

printf("%p %p\n",pa,pb);
*pa++;
*pb++;
printf("%p %p\n",pa,pb);
以上代码可以说明问题。
你要的效果其实应该是这样:
(*pa)++;
(*pb)++;
了解下优先级,记得没错的话应该是这样
*pa++;这个一个表达式,右到左结合先处理pa++ 在处理*pa

atxxfs 发表于 2018-7-20 14:44:39

关键是感觉 发表于 2018-7-20 12:59
printf("%p %p\n",pa,pb);
*pa++;
*pb++;


确实是优先级的事,基础知识啊...万分感谢!(^_^)
页: [1]
查看完整版本: C语言指针求助