赞
踩
在讨论指针自增问题之前,我们首先要知道*和++ 是同级运算,其运算先后及表达式的最终结果仅受自增特性的影响,所以我们的讨论才有意义。
而对于*、++、和p的组合,可以分为以下5种:
右自增的3种:
*p++ *(p++) (*p)++
左自增的2种:
++*p ++(*p)
按照我最初的设想,构造数组x[3],并用a收集表达式的值,写出代码如下:
- #include<stdio.h>
-
- void main() {
-
- int* x[3] = { 1,2,3 };
- int* p;
- int a=1; //存放表达式的值
-
-
- p = &x; //使p指向数组x
- printf("1 Init=%d p=%d *p=%d\n", a, p, *p);
-
- a = *p++;
- printf("2 *p++=%d p=%d *p=%d\n", a, p, *p);
-
- p = &x; //重置指针p
- a = *(p++);
- printf("3 *(p++)=%d p=%d *p=%d\n", a, p, *
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。