Bas*_*ssa 1 c++ pointers constants operator-overloading c-strings
我有以下两行代码:
const char* skimfile = argv[3];
cout << "skimfile = " << skimfile << endl;
Run Code Online (Sandbox Code Playgroud)
我知道上面两行代码有效,但我不知道为什么。如果我们想打印出指针指向的值,我们不应该使用*skimfile? 上面的代码怎么只skimfile用来访问指针指向的值skimfile?const在指针的声明前面是否会使这种情况有所不同?
非常感谢您的帮助!对此,我真的非常感激!
如果你想输出指针的值然后写
cout << "skimfile = " << static_cast<void *>( skimfile ) << endl;
Run Code Online (Sandbox Code Playgroud)
否则,用于字符指针的运算符 << 会被重载,从而输出一个指向字符串。
如果没有这样的重载运算符,您必须编写例如
const char *s = "Hello";
for ( const char *p = s; *p; ++p )
{
std::cout << *p;
}
std::cout << '\n';
Run Code Online (Sandbox Code Playgroud)
而不仅仅是
std::cout << s << '\n';
Run Code Online (Sandbox Code Playgroud)