| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 757 人关注过本帖
标题:指针的一个问题,请教
取消只看楼主 加入收藏
ajax_liu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-16
收藏
 问题点数:0 回复次数:3 
指针的一个问题,请教

程序是下面这样子的
#include<stdio.h>
main()
{
int a[]={1,2,3,4,5};
int *p;
p=a;
printf("%d%d%d%d\n",*p,*(++p),*++p,*(p--));
printf("%d%d\n",*p,*(a+2));
getch();
}

运行结果是:
2211
23

我不太明白在第一次输出的*p为什么是2啊?
因为当数组a赋值给p的时候是&a[0]的哦,而且数组a中的0号元素不就是1么????郁闷

搜索更多相关主题的帖子: 指针 
2007-06-16 00:35
ajax_liu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-16
收藏
得分:0 

请问2楼的大侠,如果printf是从右至左的顺序的话,也就是先算*(p--),那为什么结果等于2????
*(p--)是先赋值再自减1那应该是0了啊 !???
不懂


2007-06-16 10:02
ajax_liu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-16
收藏
得分:0 

非常感谢楼上大侠的指教,虽然我没学过堆栈,但是听你这么一分析这个顺序,我就明白了。
但是最不懂的还是为什么结果是
2211
23
*p的值为什么是2??
把数组a赋值给p之后应该是从数组的第0号元素开始,
而从题目知道数组a的0号元素是1(int a[]={1,2,3,4,5};)
所以为什么*p的输出是2?????


2007-06-16 18:54
ajax_liu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-6-16
收藏
得分:0 

非常感谢百年的指教,我学C半个学期了,但是还没有学堆栈,所以在理解上还是有点困难,
我想我还是回去再问下老师吧,非常感谢百年的耐心教导!!


2007-06-17 01:24
快速回复:指针的一个问题,请教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025883 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved