*p++和*(p++)以及(*p)++的区别

*P++,因为*和++的优先级一样,结合方式都是自右向左,先执行P++使P指向下一个地址,然后再执行*操作,即取P已经增加了1后,指向的地址的数值。

例如:

int a,*p,arr[5]={5,10};

p=arr;

a=*p++;

此时a的值是10;

程序先把arr数组的首地址给了p;p=arr;

然后执行p++操作,此时p指向了arr[1];

再执行取值操纵。此时p=10;

*(P++)和*P++一样的功能。

(*P)++,指的是先取p指向的地址的变量的数值,然后数组再自增1。此句不能单独使用。一般是定义一个变量,把取的值增一后存入变量中。例如

int a,*p,arr[5];

arr[0]=5;

arr[1]=10;

p=arr;(或者:p=arr[0])

a=(*p)++;

此时a的值是6;即,先取arr[0]的值,然后又增1,把此值给a;p此时仍然指向arr[0];

你可能感兴趣的:(算法,数据结构,排序算法)