
printf("%d %d",*p,*(p++));和printf("%d %d",*p,*(p+1));的结果为什么不同?????请高手指点
inta[]={6,7,8,9,10};int*p=a;printf("%d%d",*p,*(++p));结果是7,7inta[]={6,7,8,9,10};int*p=...
int a[]={6,7,8,9,10};
int *p=a;
printf("%d %d",*p,*(++p));
结果是7,7
int a[]={6,7,8,9,10};
int *p=a;
printf("%d %d",*p,*(p++));
结果是6,6
int a[]={6,7,8,9,10};
int *p=a;
printf("%d %d",*p,*(p+1));
结果是6,7
不同的结果为什么????
在c++ win32里面编译空文件和简单两种编译结果也是不同的 展开
int *p=a;
printf("%d %d",*p,*(++p));
结果是7,7
int a[]={6,7,8,9,10};
int *p=a;
printf("%d %d",*p,*(p++));
结果是6,6
int a[]={6,7,8,9,10};
int *p=a;
printf("%d %d",*p,*(p+1));
结果是6,7
不同的结果为什么????
在c++ win32里面编译空文件和简单两种编译结果也是不同的 展开
展开全部
*(p++); 是输出p的值,然后p指针加1
*(p+1); 是输出p+1的值,p指针不变
一个是p的值,一个是p+1的值,当然输出的结果不同咯
printf("%d %d",*p,*(++p));的结果跟 *(p+1)的结果相同
不过*(++p)输出后,p指针加1了,而*(p+1)输出后,p指针没有变化
*(p+1); 是输出p+1的值,p指针不变
一个是p的值,一个是p+1的值,当然输出的结果不同咯
printf("%d %d",*p,*(++p));的结果跟 *(p+1)的结果相同
不过*(++p)输出后,p指针加1了,而*(p+1)输出后,p指针没有变化
展开全部
函数调用时参数的传递顺序有不同的调用约定,您问题中给定的是按从右往左的顺序。
第一外列子中,首先计算++p,先计算自加,再使用p的值,因此指向第二个元素。
第二个例子,是p++,即首先使用p的值,进行自加,即运行完printf语句后,p指向第二个元素。
第三个例子,没有改变p的值,因此p指向第一个元素,p+1指向第二个元素。
第一外列子中,首先计算++p,先计算自加,再使用p的值,因此指向第二个元素。
第二个例子,是p++,即首先使用p的值,进行自加,即运行完printf语句后,p指向第二个元素。
第三个例子,没有改变p的值,因此p指向第一个元素,p+1指向第二个元素。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-08-26
展开全部
printf("%d %d",*p,*(p++));
这一句中*(p++)是先求出*p的值,即打印出来的是p的原值,然后再使p=p+1;根据求值顺序由右至左,实际输出是的p+1的值、p的值。
printf("%d %d",*p,*(p+1));
这一句中没有对p的赋值操作,它输出的是p的值、p+1的值,这2句语句的结果刚好相反
(注,p的值、p+1的值指的是他们对应的变量的值)
这一句中*(p++)是先求出*p的值,即打印出来的是p的原值,然后再使p=p+1;根据求值顺序由右至左,实际输出是的p+1的值、p的值。
printf("%d %d",*p,*(p+1));
这一句中没有对p的赋值操作,它输出的是p的值、p+1的值,这2句语句的结果刚好相反
(注,p的值、p+1的值指的是他们对应的变量的值)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p++是使用完p后对p进行+1,相当于执行了p=p+1,而*(p+1)这里用完之后p值还是没变,另外要注意函数的参数求值顺序,大部分是自右而左的。 就是自增运算咯,++p,对p先执行p=p+1,再取p的值进行计算,--p类似,p++,在前面说过了,和*(p+1)的区别也说了,仔细看了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然不同啦,前者是先使用值,后者是先移动指针啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询