首页 > 解决方案 > 在 C++ 中玩指针

问题描述

我一直在玩指针,为了了解如何使用,我尝试了:

baz + sizeof(char)

并且代码工作正常,我得到了正确的值,我不明白为什么。

我期望能够正常工作:

baz + sizeof(Rectangle)

但是当我使用它时会得到一个随机数。baz[1:0] 数组是如何组织的?它不应该是“矩形”对象的数组吗?

#include <iostream>
using namespace std;

class Rectangle
{
        int width, height;
public:
    Rectangle (int x, int y): width(x), height(y) {}
    int area ()
    {
        return width * height;
    }
};

int main(int argc, const char * argv[]) 
{
    Rectangle obj (10,4);
    Rectangle *foo, *bar, *baz;
    foo = &obj;
    bar = new Rectangle (5,6);
    baz = new Rectangle[2] { {2,5}, {1,2}} ;
    cout << "obj    area: " << obj.area() << endl;
    cout << "foo    area: " <<    foo -> area() << endl;
    cout << "bar    area: " <<    (*bar).area() << endl;
    cout << "bar    area: " <<    bar -> area() << endl;
    cout << "baz[0] area: " <<    baz[0].area() << endl;
    cout << "baz[1] area: " <<    (baz + sizeof(char)) -> area() << endl;

}

标签: c++pointers

解决方案


推荐阅读