A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 哈利梅 中级黑马   /  2014-10-18 16:43  /  2552 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看了别人的帖子,有点感想,想要问一下:
int *p;
*p = 12;
这样写是不对的,这个我知道的  但是我想问一下如果改成下面的,是不是就应该是对的呢,如下:
int *p;
*p = a = 12;

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

14 个回复

倒序浏览
这样怎么会对呢,你的变量a都没有定义,肯定不对的了
回复 使用道具 举报
那如果加入一个定义呢,例如:上面再定义一下 int a;
是不是这样就是对的呢?
回复 使用道具 举报
魔法少年十三 来自手机 中级黑马 2014-10-18 19:08:11
板凳
哈利梅 发表于 2014-10-18 18:51
那如果加入一个定义呢,例如:上面再定义一下 int a;
是不是这样就是对的呢? ...

基本数据类型应该是不能赋值给指针的
回复 使用道具 举报
这个帖子我觉得应该改变一下再问:例如:
int *p;
int a;
p = &a;
a = 2;
那么是不是可以说现在*p = a = 2;  这样写是对的吧???求指导
回复 使用道具 举报
哈利梅 发表于 2014-10-18 19:13
这个帖子我觉得应该改变一下再问:例如:
int *p;
int a;

按照赋值运算符 从右向左的结合顺序
int *p;
int a;
p = &a;
*p = a = 10;
这样写是应该没有问题的了
回复 使用道具 举报
p = (int*)10; 强制转换下
回复 使用道具 举报
JAH562 中级黑马 2014-10-19 19:06:38
8#
不对的,指针类型 没有做转化
回复 使用道具 举报
wehuazi 中级黑马 2014-10-19 19:58:18
9#
不对的,类型不对
回复 使用道具 举报
6楼的方法应该是正确的
回复 使用道具 举报
一个是指针类型,一个是int类型,不能直接等的
回复 使用道具 举报
貌似是对的,*p指向了a,a的值又是2,我觉得应该是可以的,待会验证一下子去
回复 使用道具 举报
是的,现在条件有限,验证不了,所以只好提问了,大家探讨探讨也挺好的,有正确答案了,希望能够告知啊~~~~多谢多谢!!
回复 使用道具 举报
可以用网页编译器验证
int *p;
int a;
p = &a;
a = 2;
这样写应该是对的。不知道哪里看过的帖子写到,定义了一个指针变量,你必须先建立起它与其它变量之间的地址联系(也就是这句p = &a;),才能对其它变量的地址赋值。(比如你再写p=2,好像就是p指向a的地址间接赋值为2)
回复 使用道具 举报
好的,谢谢了!!!谢谢大家~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马