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

第一个问题:*p++ 书上说:先取用对象,然后p自加1.我认为是先p++,再*p.因为*与++具有同样的优先级,*与++的结合性为右结合性。
第二个问题:
void main()
{
int a = 2,*p = &a;
printf("%d",*p++);
}
如果按照书上说的:先取用对象,然后p自加1. 先取用对象*p,得到的结果是2,然后2++,2++这种表达不是错误的吗?(a++; a只能为变量,不能为一个常量,表达式。)

搜索更多相关主题的帖子: 指针 
2006-01-24 14:14
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 
一、++ 在后,是先取值,再加1(加1是指针移动一个类型单位);
二、加的是指针(是指针移动,不是纯粹加数值1)!

[此贴子已经被作者于2006-1-24 14:23:40编辑过]


欢迎加入 MVC 技术讨论群(新群:90093426)
2006-01-24 14:23
zushuboderen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2005-12-24
收藏
得分:0 
*P++相当于*(p)++
*(p++)地址自增

(*p)++数据自增

冷静点............. 耐心点.............
2006-01-25 16:28
hpux
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-1-26
收藏
得分:0 

在你打印地时候,输入的值实际上是取*p的值,即2,然后指针才向后移动了一个int,
即为先打印,再赋值。

2006-01-26 01:23
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
以下是引用zzw1978524在2006-1-24 14:14:00的发言:

第一个问题:*p++ 书上说:先取用对象,然后p自加1.我认为是先p++,再*p.因为*与++具有同样的优先级,*与++的结合性为右结合性。
第二个问题:
void main()
{
int a = 2,*p = &a;
printf("%d",*p++);
}
如果按照书上说的:先取用对象,然后p自加1. 先取用对象*p,得到的结果是2,然后2++,2++这种表达不是错误的吗?(a++; a只能为变量,不能为一个常量,表达式。)

第一个问题:*p++,是先取值再进行自加,这里的++是指向*p的下一个存储地址。
而如是要是*++p,就是先指向下一个存储地址再取值。
相应的还有*--p,*p--
第二个问题:
void main()
{
int a = 2,*p = &a;
printf("%d",*p++);/*是指向下一个地址*/
printf("\n%d",a); /*现在a的值是2*/
}


2006-03-05 12:35
快速回复:指针++的问题
数据加载中...
 
   



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

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