是否可以将一种类型的数组转换为大小不同的另一种类型的数组?

And*_*ong 3 c++ arrays casting

例如,我可以采取

int array[12];
Run Code Online (Sandbox Code Playgroud)

并简单地通过转换指针将其转换为 a char[48],并假设int我的机器上是 4 个字节?正确的语法是什么?它是否普遍适用?

我知道新数组的大小不会是明确的,我必须再次自己进行除法,因为我知道在我的机器上int是 4 个字节。

Ziv*_*ivS 6

正确的C++方法是使用reinterpret_cast

int array[12];
char* pChar = reinterpret_cast<char*>(array);
Run Code Online (Sandbox Code Playgroud)

您应该注意,sizeof(array)12*sizeof(int)等于12 * (sizeof(int) / sizeof(char)),在大多数(如果没有)机器中,它大于 ,sizeof(char[3])因为 sizeof(char) 通常是 的四分之一sizeof(int)

所以int array[12];可以解释为char array[12*4];