【发布时间】:2013-04-09 11:26:54
【问题描述】:
这段代码:
string str1 ( "Hello world" );
const char *c_str1 = str1.c_str ( );
cout << "The C-style string c_str1 is: " << c_str1
产生这个输出:
The C-style string c_str1 is: Hello world
我不明白。
c_str1 是一个指针,对吧?因此,c_str1 应该返回一个地址,并且只有 *c_str1 应该给出位于该地址的值。但是,在上面的示例中,c_str1 给出了值(而不是地址)。
我误会了什么?
【问题讨论】:
-
&c_str1将是指针的地址。你在想*c_str1,但那只会给你第一个char。 -
@larsmans,我认为
&x给出了普通变量x的地址,而“指针地址”很奇怪,因为指针已经是一个地址。 -
稍微简化一下,指向
T的指针是一个包含地址的变量。该变量必须存在于某个地方,因此它也有一个地址,类型为T**(指向T的指针)。