请考虑以下类型:
struct S
{
char v;
};
Run Code Online (Sandbox Code Playgroud)
给定一个数组const S,是否有可能以符合标准的方式将其重新解释为一个数组,const char其元素对应v于每个原始数组元素的成员值,反之亦然?例如:
const S a1[] = { {'a'}, {'4'}, {'2'}, {'\0'} };
const char* a2 = reinterpret_cast< const char* >(a1);
for (int i = 0; i < 4; ++i)
std::cout << std::boolalpha << (a1[i].v == a2[i]) << ' ';
Run Code Online (Sandbox Code Playgroud)
上面的代码是否可移植,是否可以打印true true true true?如果没有,有没有其他方法来实现这一目标?
显然,可以创建一个新数组并使用v原始数组的每个元素的成员对其进行初始化,但整个想法是避免创建新数组.