当前位置:  开发笔记 > 编程语言 > 正文

%p和cout&ptr之间的C++差异

如何解决《%p和cout&ptr之间的C++差异》经验,为你挑选了1个好方法。

所以我有一段代码需要打印一个数字的地址和一个ptr的地址.这是代码:

int main() {
    float number1 = 1;
    float number2;

    float *fPtr;
    fPtr = &number1;
    cout << "Value of object pointed to by fPtr: " << *fPtr << endl;

    cout << "Value of number 2: " << number2 << endl;

    cout << "Address of number 1: " << &number1 << endl;
    printf("%p\n", &number1);
    cout << "Address fPtr: " << &fPtr << endl;
    printf("%p", fPtr);


    return 0;
}

输出是:

fPtr指向的对象的值:1

数字2的值:0

编号1的地址:0xbfb7e348

0xbfb7e348

地址fPtr:0xbfb7e34c

0xbfb7e348

为什么使用%p转换说明符打印的两个地址相同?当使用&时,地址是不同的,这是我期望的,因为number1和fPtr保存在不同的地址中.

另外,我从语句'printf("%p \n",&number1)中删除了&;' 返回值为零.谁有人解释为什么?



1> juanchopanza..:

在这里,您打印的地址fPtr:

cout << "Address fPtr: " << &fPtr << endl;

在这里,你打印的价值fPtr:

printf("%p", fPtr);

那些不是一回事.

如果你要打印的地址fPtrprintf,那么你需要

printf("%p", &fPtr);

如果要打印fPtrwith 的值std::cout,则需要

cout << fPtr << endl;

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有