我在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方法时,它只给出了指针的大小,而不是实际的对象。我试图找到对象的大小。我的问题是如何在指定指针的情况下获取对象的大小?
答案 0 :(得分:3)
阵列自然地衰减到指针,当他们这样做时,所有大小的信息都会丢失。最常见的解决方案是将数组中的元素数作为参数传递。也可以使用模板来推断数组大小。
或 使用std::array
(或std::vector
,视具体情况而定),这是我推荐的解决方案。
答案 1 :(得分:-1)
回答我自己的问题:
为什么我发布此答案
我当时是C ++的新手,其他问题已被标记为重复。因此,我猜这样的其他问题来自C ++新手。这个答案将是为了那些新手的利益。
我的回答
与Python或JAVA等高级语言不同,数组的长度不与数组内容一起存储,因此无法访问它。
因此,它必须作为单独的参数传递。它在高级语言中可能没有多大意义,但它在C和C ++中都是必要的。
此外,与Python和JAVA不同,数组不是一个对象。要完全理解C / C ++数组,首先必须理解指针。