我已经在代码中创建了一些指针,但是结果却不是我期望的。
这是简单的代码:
int main(int argc, char const* argv[])
{
int myInt = 23;
int* ptr = &myInt;
char* buffer = new char[8];
memset(buffer, 0, 8);
char** ptr2 = &buffer;
std::cout << "ptr address is " << ptr << std::endl;
std::cout << "buffer pointer is pointing to address " << buffer << std::endl;
std::cout << "ptr2 pointer is pointing to address " << ptr2 << std::endl;
std::cout << "Dereferencing ptr2 = " << *ptr2 << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是运行代码的结果:
ptr地址是0x7ffde215a14c
缓冲区指针指向地址
ptr2指针指向地址0x7ffde215a150
取消引用ptr2 =
我想知道为什么不显示缓冲区指针地址,为什么对的取消引用ptr2也没有显示,但是ptr2指向缓冲区指针的指针()显示该地址。这对我来说毫无意义。
所有类型的流<<运算符都显式重载以将char*其打印为以null终止的字符串。要打印指针,您需要强制转换它:
std::cout << "buffer pointer is pointing to address " << reinterpret_cast<void*>(buffer) << std::endl;
Run Code Online (Sandbox Code Playgroud)