返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #6162同步于 2008/5/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
int *p = &a和int *p = a有什么不一样?
win520
2008/5/4镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
int *p = &a;是把变量a的地址赋给指针p;
int *p =a;则是把p指向原来 指针 a 指向的地方;
【 在 win520 (winwin) 的大作中提到: 】
不对吧,
int *p =a;是把变量a的地址赋给指针p;即*p的值即为a的值
int *p = &a;我不太确定,好象和前者是一样的
【 在 purevirtual 的大作中提到: 】
: int *p = &a;是把变量a的地址赋给指针p;
: int *p =a;则是把p指向原来 指针 a 指向的地方;
不对啊,如果a是个int变量的话,你要取他的地址就要用取地址符号&才行,也就是
int *p=&a;
如果写成int *p=a;的话就说明a也是一个指针,这样的话就把a指向的地址赋给了p,也就是说现在p和a指向了同一块地址
【 在 chopin19 (chopin19) 的大作中提到: 】
: 不对吧,
: int *p =a;是把变量a的地址赋给指针p;即*p的值即为a的值
: int *p = &a;我不太确定,好象和前者是一样的
: ...................
o,对,刚才大脑突然短路了一下。。。。
【 在 purevirtual 的大作中提到: 】
: 不对啊,如果a是个int变量的话,你要取他的地址就要用取地址符号&才行,也就是
: int *p=&a;
: 如果写成int *p=a;的话就说明a也是一个指针,这样的话就把a指向的地址赋给了p,也就是说现在p和a指向了同一块地址
nothing,其实我也经常这样.......
【 在 chopin19 (chopin19) 的大作中提到: 】
: o,对,刚才大脑突然短路了一下。。。。
能否稍微细说一下,没明白什么叫做“无歧义”
【 在 cxy066554 (幻影一刀) 的大作中提到: 】
: int *p = &a;
: int *p =a;
: 编译器知道 p是指针,对编译器来说这两句话是无歧义的,
: ...................
【 在 yangwudi3110 的大作中提到: 】
: 能否稍微细说一下,没明白什么叫做“无歧义”
就是右边的a必须匹配左边的p的类型
因为左边的类型已经是 int *了,所以a或&a的类型必须是int *
如果 a的声明为int *a则p=a就没问题
如果a的声明为int a 则p=a就有问题,此时必须改为p=&a,变成匹配的int *格式