如题,请问*p++与哪个相同阿?有什么区别吗?
如果
int a[2]={1,3};
int *p = a;
printf("%d", *p++);
请问值是多少?

解决方案 »

  1.   

    1
    *p++与(*p)++,*(p++) 都一样吧,你到VC测试下,一般不要写这样代码。
      

  2.   

    *p++ 和(*p)++ 一样。
    *(p++)是下个指针指向的值
      

  3.   

    不一样吧
    *p++ 后p指向下一个单元
    而(*p)++之后p指向没变,p指向的值变了
      

  4.   

    *p++到底与哪个相同?
    这里考察到了,优先级、以及结合顺序问题。
    自增符++与指针符*
    两者优先级相同,但是结合顺序是自右至左,所以等同于*(p++)int a[2]={1,3};
    int *p = a;
    printf("%d", *p++);
    请问值是多少?输出的值是a[0],然后p自增变成a+1;
      

  5.   

    如题,请问*p++与哪个相同阿?有什么区别吗?
    如果
    int a[2]={1,3};
    int *p = a;
    printf("%d", *p++);
    请问值是多少?输出:1
      

  6.   

    *p++与(*p)++不一样而是与*(p++)一样:遇到这种 *,++(++其实有两种,写在左面的跟写在右面的),要从右往左读,比如*p++就是p++,然后再引用p,这就导致,下次引用p时p 指向了下一个单元,而(*p)++被括号改变了求值顺序,改变的是p指向的那个单元的值,所以再引用p时p 没变,但单元中的值发生了变化。
    这些求值顺序的问题各个编译器不同,但好像大多是从右到左,所以好的书写习惯是用括号。
      

  7.   

    我试验过了,
    *p++与 *p(++)一样
    (*p)++是对值++
    感谢帮助,谢谢,马上散分