C语言*和++的结合运算
有朋友学习了指针,取值符号*和++混在一起摸不着头脑,两者结合后不懂如何运算,今天我给大家总结了简单明了的方法,包你看完就会,妈妈再也不用当心我的学习啦。来人,上代码
int arr[] = {1,4,8,10};
int *p = arr;//指针p指向数组的第一个元素
//*优先级高于++,所以*p取值为1,其次按照++的结合性,会对指针p进行加1,指向下一个地址
int a = *p++;
//由于此时p指向了第二个元素的地址,所以取值是4
int b = *p;
//先对*p取值为4,再自加结果为5
int c = ++*p;
//先对*p取值为5,下一个表达式再使用自加的结果6
int d = (*p)++;
//因为++是在后面,所以先算*p取值为6,然后指针p加1,下一个表达式使用p时,p已经指向第三个元素
int e = *(p++);
//此时指针指向第三个元素,取值为8
int f = *p;
printf("a = %d\nb = %d\nc = %d\nd = %d\ne = %d\nf = %d\n",a,b,c,d,e,f);
//结果a = 1,b = 4,c = 5,d = 5,e = 6,f = 8
总结:
1.首先得确定++是对指针p进行自加还是对p的值进行自加,如果离++最近的是p,那就是指针加1,否则是p的值加1。
2.取值符h的优先级高于++,确定先运算取值还是先++运算,有括号先算括号。
3.注意++在前还是在后,如果先++,等号左边输出的是++后的值,如果是后++,等号左边输出的是++前的值,下一个表达式才使用++后的值。
看完还不懂童鞋留言评论给我。