注册 登录
编程论坛 C++教室

无论是新手还是大侠 都来帮俺分解一下

huang1938120 发布于 2012-12-26 16:38, 365 次点击
int i;
int *a;
a=&i;
cout<<a<<endl;
cout<<&i<<endl;
但是当我想用 printf 输出时 也就是printf("%d",&a)
为什么会和前面输出的不一样   请帮俺分解一下  在此多谢

[ 本帖最后由 huang1938120 于 2012-12-27 10:59 编辑 ]
7 回复
#2
yzf3263630252012-12-26 17:22
printf中%d这种格式是输出十进制的,用%x试试
#3
bulubulukaka2012-12-26 17:25
建议用%p来输出内存地址
#4
yuccn2012-12-26 17:26
a=&a; ? 你想干什么?干嘛指向自己(a指针的地址)?编译不会通过吧,a是指针,&a 是“指针的指针”了
printf("%d",&a) 和谁不一样?

cout<<a<<endl;和  printf("%x\n", a); 是一样的,
#5
yuccn2012-12-26 17:27
a=&a; 这个 要a=(int *)&a; 才能通过吧。不确定和编译器有没有关系
#6
张海锋2012-12-26 20:47
因为指针本来就是有地址分配的啊!第一个输出的应该是指针的地址吧,第二输出的是a的地址吧
#7
huang19381202012-12-27 11:00
呃 抱歉   写错了那里应该是&i  实在抱歉
#8
huang19381202012-12-27 11:03
回复 4楼 yuccn
呃 抱歉 那里应该是 a=&i
1