#include <iostream>
using namespace std;
int main() {
char* str = "geek";
//why is this not giving base address of str i.e. (int*)str
cout<<&str[0];
//output:
//geek
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我认为,印刷&str[0]应该给的地址0个是一样的元素(int*)str,基址.请解释.
&str[0] 确实给你第一个字符的地址.但是,它的类型char*被解释为以null结尾的字符串,并且操作符的相应char*重载<<将用于将其作为字符串打印.
您需要将指针转换为更通用的类型,如void*:
static_cast<void*>(&str[0])
Run Code Online (Sandbox Code Playgroud)
在一个非常相关的说明,不要忘了,&str[0]是恰好等于平淡str.
另外不要忘记在C++中,文字字符串实际上是常量字符串,因此str应该是类型char const*(或更常见const char*).