const char* 转换有关问题

const char** 转换问题
这几行代码是可以运行的:
std::string Str("yuanzan");
const char* pStr = Str.c_str();
const char** ppStr = &pStr;
最后一行换成const char** ppStr = &(Str.c_str());
报出这样的错:
error C2102: '&' requires l-value
求大神解答啊,thank you
char** char*

------解决方案--------------------
&是对于变量取地址,Str.c_str()返回的是一个值,不是一个变量。
你本来的代码是把值给了一个变量,取变量的地址。
你自己想想你现在的代码是个什么意思?
------解决方案--------------------
Str.c_str() 返回一个地址
你可以对一个变量取址,
但是不能对一个常数取址
------解决方案--------------------
&用在变量前面是取地址,放在值前面是取啥?
const char* 转换有关问题
------解决方案--------------------
Str.c_str()返回右值,实际上除非函数返回值是引用类型,否则函数返回的是右值类型。而取地址&需要左值
------解决方案--------------------
C++11右值引用→_→
开玩笑的..不过你的确可以尝试下
------解决方案--------------------
Str.c_str()本身就是一个地址值,所以不可以进行&操作。
pStr不一样,它是一个指针变量。