赞
踩
我们定义如下:
int a[5]={1,3,5,7,9};
int *p = a;
int Data = 0;
例题1、
Data = *p++;
执行后,结果为:
Data 为1,p指向a[1]。
分析:
* 和++,优先级相同,但是,++是后运算的。
相当于下面两句:
Data = *p;
p++;
例题2、
Data = (*p)++;
执行后,结果为:
Data 为1,p不变,仍然指向a[0],此时a[0]变为2。
分析:
()的优先级高于++和*,先计算()内的数值,*p是取得了a[0],然后将这个数值赋值给Data,然后这个值再加1,a[0]加1。
相当于下面两句:
Data = a[0];
a[0] = a[0] + 1;
例题3、
Data = ((*p)++);
执行后,结果为:
Data 为1,p不变,仍然指向a[0],此时a[0]变为2,结果不受括号影响。
例题4、
Data = *++p;
执行后,结果为:
Data 为3,p加1,指向a[1],然后取内容赋值给Data。
分析:
*和++优先级一样,此时++先与p进行运算,p会先加1,然后再将指向的变量内容赋值给Data。
例题5、
Data = ++*p;
执行后,结果为:
Data 为2,p不变,仍然指向a[0]。
分析:
*和++优先级一样,此时*先与p进行运算,*p为a[0],然后a[0]先加1,再赋值给Data。
例题6、
Data = *(p++);
执行后,结果为:
Data 为1,p加1,指向a[1]。
分析:
*和++优先级一样,但是()优先级最更高,此时先计算括号内p++,但是由于++是后运算的,此时相当于Data =*(p);p++。
我的qq 为308777087,欢迎技术交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。