在 x86_64 架构中,指针大小为 8 字节。我认为
sizeof(x)
应该返回 8 是有道理的。我知道一个 char
是一个字节,z
数组的大小是 5 个字节。那么为什么 sizeof(z)
不返回 8 呢?int* x = new int[10];
char z[5];
// Returns 8
std::cout << "This is the size of x: " << sizeof(x) << std::endl;
// Returns 5
std::cout << "This is the size of z: " << sizeof(z) << std::endl;
z
是一个包含 5 个字符的数组。 - Eljaysizeof
是一个运算符,而不是函数。因此,当传递一个包含5个字符的数组到sizeof
的时候,它并不会被转换为指针类型。换句话说,当把一个数组传递给sizeof
运算符时,结果是该数组在内存中占用的绝对字节数。 - selbie