2011-04-06 62 views

回答

3

name不是指针,名称是std::string对象。 &name,其中的指针,是该对象的地址。

7

name不是指针,它是std::string本身。所以&name是该字符串的地址,这意味着该代码将打印出一个数字。

即使它是一个指针,在其上使用operator &也是合法的:它会返回指针变量在内存中的地址(另一个不同的数字)。

如果你想有一个指针内name的第一个字符,然后用name.c_str()获得C风格空结尾的字符串(实际上是一个指向字符串的第一个字符),或name.data()它返回一个指针到字符串,但不能保证它将以null结尾。

+1

另外:

int i = 5; int *j = &i; int **k = &j; 

,如果你想一个指针传递到具有(通过分配内存的实例)以操纵指针的函数,这是有用试图改变Ç风格的字符串将导致未定义的行为(C++ 03 21.3.6/2&17.4.3.8) – 2011-04-06 11:59:05

0

嗨string类有c_str()方法。 使用const char* ptr = name.c_str();

2
  1. name不是指针,它是std::string类型的对象。 &name为您提供该对象的地址。
  2. 要获取指向字符串第一个字符的(const-)指针,请使用name.c_str()
  3. 指针也有地址!

    void allocate_string(std::string **foo) { 
        *foo = new std::string(); 
    } 
    
相关问题