鉴于
string name="avinash";
cout<<&name;
如果name
是指向a的指针那么我们如何在指针上使用地址?
答案 0 :(得分:7)
name
不是指针,而是std::string
本身。因此&name
是该字符串的地址,这意味着此代码将打印出一个数字。
即使它是一个指针,在它上面使用operator &
也是完全合法的:它会在内存中返回指针变量的地址(另一个,不同的数字)。
如果你想要一个指向name
内第一个字符的指针,那么使用name.c_str()
来获得一个C风格的以空字符结尾的字符串(实际上是一个指向字符串第一个字符的指针)或name.data()
返回指向字符串的指针,但不保证它将以空值终止。
答案 1 :(得分:3)
name
不是指针,name是std::string
对象。 &name
,是指针,是该对象的地址。
答案 2 :(得分:2)
name
不是指针,它是std::string
类型的对象。 &name
为您提供该对象的地址。name.c_str()
。指针也有地址!
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();