| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 560 人关注过本帖
标题:*p++的疑问与*(p++)
取消只看楼主 加入收藏
yusuiyunqu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-5-7
收藏
 问题点数:0 回复次数:1 
*p++的疑问与*(p++)
#include "stdio.h"
void main()
{
    int a=2;
    int *p=&a;
    int *pold;//记录P指向的地址,为了作为比较使用
    pold=p;
    //-----------原来的信息
    printf("原来的a=%d ",a);
    printf("原来的p=%x ",p);
    printf("原来的pold=%x ",pold);
    //----------进行变化
    printf("a=%d,(*p)++的结果=%d,a的结果a=%d ",a,(*p)++,a);
    printf("a的结果a=%d ",a);
printf("地址变化的结果p-pold=%x ",p-pold);


程序运行的结果如下
图片附件: 游客没有浏览图片的权限,请 登录注册

 

我对第十四行的结果存在疑问:1 按照printf( )函数从右到左的运算方式,那么结果应该是 a=3,( *p)++=2,a=2;
第十五行的结果应该为 a=3;
我把(*p)++ 换成a,结果如下
图片附件: 游客没有浏览图片的权限,请 登录注册

 
请问这是为什么,盼望赐教 我在线等待!!谢谢!!!




搜索更多相关主题的帖子: 疑问 
2009-09-29 14:06
yusuiyunqu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-5-7
收藏
得分:0 
关于以上的问题  我又重新编译了一下,结果正确。请大家在看看这个精编的程序。不过还有点问题。

#include "stdio.h"
void main()
{
 int a=2,*p=&a;
 int pold=p;
 printf("a=%d,p=%x,pold=%x\n",a,p,pold);
 printf("a=%d,(*p)++=%d,a=%d\n",a,(*p)++,a);
 printf("p-pold=%d\n",p-pold);
}
结果如下
图片附件: 游客没有浏览图片的权限,请 登录注册

#include "stdio.h"
void main()
{
 int a=2,*p=&a;
 int pold=p;
 printf("a=%d,p=%x,pold=%x\n",a,p,pold);
 printf("a=%d,a++=%d,a=%d\n",a,a++,a);
printf("p-pold=%d\n",p-pold);
}
结果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

这次正确了,和我预想的一样。只是最后 p-pold的值与预期不一样。

请一楼 二楼 的指正下。谢谢大家了  尤其是一楼和二楼的朋友。
还有 请你们给介绍点C语言内存管理方面的书籍吧  最好能在网上下载的。
再一次 谢谢了
2009-09-29 15:37
快速回复:*p++的疑问与*(p++)
数据加载中...
 
   



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

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