gpt4 book ai didi

c++ - 为什么 printf() 显示的地址输出与 C++ 指针中的 cout 不同?

转载 作者:行者123 更新时间:2023-11-30 01:56:14 25 4
gpt4 key购买 nike

#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int main(){

int x = 25;
int y = 35;

int *p0 = &x;
int *p1 = &y;

cout << p0 << endl;

printf("%x",p0);

cin.get();
return 0;
}

printf() 显示22fd6c

的内存地址输出

鉴于

cout 显示0x22fd6c

的内存地址输出

只是想知道这是否重要,如果重要,是否有任何解决方法。

最佳答案

因为您使用 %x 作为格式说明符,这意味着 unsigned int 的十六进制格式(没有 0x)。在您的机器中它是相同的数字但格式不同,但在对象指针通常有 8 个字节的 64 位机器中,您可能会使用不同的数字。

指针的正确格式说明符是%p,它以实现定义的方式打印指针,通常以0x为前缀,试试这个:

printf("%p\n", static_cast<void *>(p0));

请注意,%p 需要一个 void * 指针,因此需要强制转换。

关于c++ - 为什么 printf() 显示的地址输出与 C++ 指针中的 cout 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19967312/

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