| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 455 人关注过本帖
标题:请教一个指针变量的基础问题
只看楼主 加入收藏
love_1Sec
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-1-27
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
请教一个指针变量的基础问题
大家好
#include <stdio.h>
#include <stdlib.h>
main()
{int a=10;
 int *p1=&a;
 int *p2=&a;
 printf("%d %d %d",*p1++,*p1,*(p2++));
 system("pause");
      }
1.。。这样运行下来结果是 10 10 10;我想问我通过给P2加一个括号想改变P2的地址,但是没成功 是因为指针变量的*运算符优先级要比()还高吗?
我把这个改一下printf("%d %d %d",*p1++,*p1,*(p2+1));这样的话就是访问一个随机的数字了。。不知道是为什么
2.。。还有个问题看视频说指针变量p1的值是一个无关符号的整数  我想获得p1的地址的值怎么办?我试了如果int c=&a;或者int c=p1;都不好用啊。。
搜索更多相关主题的帖子: include system 优先级 
2013-01-30 20:37
Johnsonzhen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2013-1-19
收藏
得分:7 
1.由于此处的++是后继加,所以先得到*p为10之后,才会处理++的动作。所以这个语句先打印出100,然后将p指向下一地址。
2.p2+1,你已经把P2的地址改变了,当然访问一个随机的数字了。
3.获得p1的地址的值怎么办    printf("%p",p1).
你试一下这段程序:
#include <stdio.h>
#include <stdlib.h>
void main()
{int a=10;
int *p1=&a;
int *p2=&a;
printf("%d %d %d\n",*p1++,*p1,*(p2++));
printf("%p\n",p2);
printf("%p\n",(p2+1));
printf("%p\n",p2++);
printf("%p\n",p1);
printf("%p\n",(p1++));
system("pause");
      }
2013-01-30 21:04
love_1Sec
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-1-27
收藏
得分:0 
回复 2楼 Johnsonzhen
1. 我感觉要是不加括号 是应该先取P的值  但是()不是可以改变运算顺序吗。。。
3.输出地址了!但是如何把地址赋给一个变量呢?
2013-01-30 21:18
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:3 
你改成++p应该就成了,p++表示这句话运行完后再进行自加运算
2013-01-30 21:31
love_1Sec
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-1-27
收藏
得分:0 
回复 4楼 果沫
恩行!~~呵呵
2013-01-30 22:04
love_1Sec
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-1-27
收藏
得分:0 
回复 2楼 Johnsonzhen
明白了。。  谢了
2013-01-30 22:08
Johnsonzhen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2013-1-19
收藏
得分:0 
回复 6楼 love_1Sec
1.和括号没关系,和++后置还是前置有关系。
2.地址可以复制给指针变量,而不能赋值给一般变量,例如整形,浮点型。因为他们类型不匹配!
2013-01-31 12:07
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
收藏
得分:0 
这问题就需要了解编译器是如何处理这些记号的了,如果不想了解只关心程序执行的过程,你看下汇编代码就一目了然了
2013-02-02 13:28
快速回复:请教一个指针变量的基础问题
数据加载中...
 
   



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

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