为什么下面这段代码返回的是指针指向的值而不是指针的地址?

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用来访问指针指向的值skimfileconst在指针的声明前面是否会使这种情况有所不同?

非常感谢您的帮助!对此,我真的非常感激!

Vla*_*cow 5

如果你想输出指针的值然后写

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)