黑马程序员技术交流社区

标题: int *p; *p = a = 12;这样对不对呢? [打印本页]

作者: 哈利梅    时间: 2014-10-18 16:43
标题: int *p; *p = a = 12;这样对不对呢?
看了别人的帖子,有点感想,想要问一下:
int *p;
*p = 12;
这样写是不对的,这个我知道的  但是我想问一下如果改成下面的,是不是就应该是对的呢,如下:
int *p;
*p = a = 12;

作者: 易拉罐    时间: 2014-10-18 18:25
这样怎么会对呢,你的变量a都没有定义,肯定不对的了
作者: 哈利梅    时间: 2014-10-18 18:51
那如果加入一个定义呢,例如:上面再定义一下 int a;
是不是这样就是对的呢?
作者: 魔法少年十三    时间: 2014-10-18 19:08
哈利梅 发表于 2014-10-18 18:51
那如果加入一个定义呢,例如:上面再定义一下 int a;
是不是这样就是对的呢? ...

基本数据类型应该是不能赋值给指针的
作者: 哈利梅    时间: 2014-10-18 19:13
这个帖子我觉得应该改变一下再问:例如:
int *p;
int a;
p = &a;
a = 2;
那么是不是可以说现在*p = a = 2;  这样写是对的吧???求指导
作者: 弹琴骚年    时间: 2014-10-18 21:06
哈利梅 发表于 2014-10-18 19:13
这个帖子我觉得应该改变一下再问:例如:
int *p;
int a;

按照赋值运算符 从右向左的结合顺序
int *p;
int a;
p = &a;
*p = a = 10;
这样写是应该没有问题的了
作者: 风格人    时间: 2014-10-19 18:47
p = (int*)10; 强制转换下
作者: JAH562    时间: 2014-10-19 19:06
不对的,指针类型 没有做转化
作者: wehuazi    时间: 2014-10-19 19:58
不对的,类型不对
作者: duzhong    时间: 2014-10-19 22:11
6楼的方法应该是正确的
作者: bhr756052342    时间: 2014-10-20 00:41
一个是指针类型,一个是int类型,不能直接等的
作者: 兵临城下    时间: 2014-10-20 11:13
貌似是对的,*p指向了a,a的值又是2,我觉得应该是可以的,待会验证一下子去
作者: 哈利梅    时间: 2014-10-20 11:26
是的,现在条件有限,验证不了,所以只好提问了,大家探讨探讨也挺好的,有正确答案了,希望能够告知啊~~~~多谢多谢!!
作者: x65396731    时间: 2014-10-20 13:27
可以用网页编译器验证
int *p;
int a;
p = &a;
a = 2;
这样写应该是对的。不知道哪里看过的帖子写到,定义了一个指针变量,你必须先建立起它与其它变量之间的地址联系(也就是这句p = &a;),才能对其它变量的地址赋值。(比如你再写p=2,好像就是p指向a的地址间接赋值为2)
作者: 哈利梅    时间: 2014-10-20 13:33
好的,谢谢了!!!谢谢大家~~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2