string类型与char const *类型
在做书上的例题是遇到如下问题:
int main()
{
char *pch = "abc"; // caution:ISO C++11 doesn't allow conversion from string literal to 'char*'
cout<<pch<<endl;
cout<<(void*)pch<<endl;
}
困惑于char*直接指向一个字符串,既没有分配动态内存也没有指向一个已声明的变量。
一般来说,字符串可以被隐式类型转换为char const *
。大神的解答如下:
对于内存、可执行文件理解不够,暂时不能理解。
查阅网上文献得出在ISO C++03中这种表达是可以的,而看来会引发一些错误,因此在ISO C++11中取消了这种表达。
有如下解决办法: