这个输出结果为什么是511不是a的地址

img


这个程序为什么输出的结果是511不是a的地址 b的指针不是是等于a的地址吗不应该输出的是a的地址吗

%p, b 才是输出地址,%d, *b是输出值。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    回答:

    这个问题的出现是因为你的对指针变量b的地址有了误解。指针变量b本身就是一个地址,而不是指向地址的指针。所以,你输出的是b变量本身的地址,而不是指向a变量的指针。

    解决方案:

    需要使用&操作符来获取a变量的地址,然后将其赋值给b指针变量。示例代码如下:

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int a = 10;
        int* b = &a;
    
        cout << "a变量的地址:" << &a << endl;
        cout << "b指针变量的值:" << b << endl;
    
        return 0;
    }
    

    输出为:

    a变量的地址:0x61ff0c
    b指针变量的值:0x61ff0c
    

    可以看到,现在b指针变量的值等于a变量的地址了。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^