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

字符指针怎么输出其地址

mehere 发布于 2008-07-24 21:59, 4136 次点击
像int *p=&x; //假设变量x的地址为2000
cout<<p;   //输出2000

而char *a="abcdefg";
cout<<a;  //输出不是地址!!!而是“abcdefg”
那么怎样才能显示其地址?
9 回复
#2
zjl1382008-07-24 22:18
cout<<&a;
#3
blueboy820062008-07-24 22:20
在a前加个&
取地址运算符。。。
#4
風释18742008-07-25 18:10
那么为什么用p就可以不用加取地址运算符啊!
#5
很远的那颗星2008-07-25 18:30
像int *p=&x; //假设变量x的地址为2000.................(1)
cout<<p;   //输出2000................................(2)

在(1)中,已经将 X 的地址赋给指针变量P.
所以在(2)中可直接输出.
#6
hykk55952008-07-25 21:41
回复 4# 風释1874 的帖子
因为p指向的是整型变量,a指向的是字符串的首地址。
要想直接输出字符串只要给出字符串的首地址即可,即cout<<a;
#7
nwpu0634172008-07-26 10:44
之所以会出现这样的现象,是因为C++里重载了cout,又叫做多态。
呵呵
#8
mehere2008-07-28 21:43
[bo][un]nwpu063417[/un] 在 2008-7-26 10:44 的发言:[/bo]

之所以会出现这样的现象,是因为C++里重载了cout,又叫做多态。
呵呵

请问这是什么意思?哪个章节会讲道?

还有
char *a[]={"asd","sdf","fgh"};cout<<*a<<**a;(后者输出为a  不懂啊)
而char *a="asd";cout<<**a;(invalid type argument of 'unary *'什么一元的*无效类型???)
即使加上char **a;编译时说conflicting declaration 'char**a'  声明冲突???
这到底是怎么一回事?

先谢谢了!!!

[[it] 本帖最后由 mehere 于 2008-7-28 22:05 编辑 [/it]]
#9
笛神2008-12-12 11:20

给个答案?
#10
zzt_4282008-12-12 14:14
加一个取地址符号
1