gpt4 book ai didi

c++ - 对指针及其地址感到困惑

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:32 25 4
gpt4 key购买 nike

我在代码中创建了一些指针,但结果不是我所期望的。

这是简单的代码:

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;
}

下面是运行代码的结果:

ptr address is 0x7ffde215a14c

buffer pointer is pointing to address

ptr2 pointer is pointing to address 0x7ffde215a150

Dereferencing ptr2 =

我想知道为什么缓冲区指针地址不显示以及为什么对 ptr2 的取消引用也没有显示任何内容,但指向缓冲区指针的指针 (ptr2) 是显示那个地址。这些对我来说都毫无意义。

最佳答案

<<运算符是 explicitly overloaded for all kinds of char* 将其打印为 null-terminated string。要打印指针,您需要对其进行转换:

std::cout << "buffer pointer is pointing to address " << reinterpret_cast<void*>(buffer) << std::endl;

关于c++ - 对指针及其地址感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58464670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com