string的名称作为指向其第一个字符的指针

时间:2011-04-06 11:16:25

标签: c++

鉴于

string name="avinash";  
cout<<&name;  

如果name是指向a的指针那么我们如何在指针上使用地址?

4 个答案:

答案 0 :(得分:7)

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

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

如果你想要一个指向name内第一个字符的指针,那么使用name.c_str()来获得一个C风格的以空字符结尾的字符串(实际上是一个指向字符串第一个字符的指针)或name.data()返回指向字符串的指针,但不保证它将以空值终止。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

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

    如果要将指针传递给必须操作该指针的函数(例如通过分配内存),这很有用:

    void allocate_string(std::string **foo) {
        *foo = new std::string();
    }
    

答案 3 :(得分:0)

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