据我所知,编译时类似 C 的字符串仅作为一个实例保存在静态内存中。例如,我true
在下面的 gcc 4.6 运行示例中得到了两者。但我想知道它是否总是真实的并且可以携带。C 和 C++ 上的行为都很有趣。
#include <iostream>
bool amIportable(const char* value) {
const char* slocal = "Hello";
return (slocal==value);
}
int main() {
const char* s = "Hello";
std::cout << std::boolalpha
<< amIportable(s) << '\n'
<< amIportable("Hello") << '\n';
}