传递给函数的数组对象的大小

时间:2015-09-11 04:17:38

标签: c++ pointers object sizeof

我在C ++中运行以下代码:

class Tile {
    //class definition
};

bool myFunction(Tile* Tiles) {
    sizeof(Tiles);
    sizeof(Tiles[0]);
    //other code
}

int main () {
    Tile tiles [16];
    //other stuff
    myFunction(tiles);
    return 0;
}

当我使用如上所述的sizeof方法时,它只给出了指针的大小,而不是实际的对象。我试图找到对象的大小。我的问题是如何在指定指针的情况下获取对象的大小?

2 个答案:

答案 0 :(得分:3)

阵列自然地衰减到指针,当他们这样做时,所有大小的信息都会丢失。最常见的解决方案是将数组中的元素数作为参数传递。也可以使用模板来推断数组大小。

使用std::array(或std::vector,视具体情况而定),这是我推荐的解决方案。

答案 1 :(得分:-1)

回答我自己的问题:

为什么我发布此答案

我当时是C ++的新手,其他问题已被标记为重复。因此,我猜这样的其他问题来自C ++新手。这个答案将是为了那些新手的利益。

我的回答

与Python或JAVA等高级语言不同,数组的长度与数组内容一起存储,因此无法访问它。

因此,它必须作为单独的参数传递。它在高级语言中可能没有多大意义,但它在C和C ++中都是必要的。

此外,与Python和JAVA不同,数组是一个对象。要完全理解C / C ++数组,首先必须理解指针。