And*_*ong 3 c++ arrays casting
例如,我可以采取
int array[12];
Run Code Online (Sandbox Code Playgroud)
并简单地通过转换指针将其转换为 a char[48],并假设int我的机器上是 4 个字节?正确的语法是什么?它是否普遍适用?
我知道新数组的大小不会是明确的,即我必须再次自己进行除法,因为我知道在我的机器上int是 4 个字节。
正确的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];