Благодаря обсуждению первого ответа и ответов автора можно организовать следующую программу:
union conv{
char (*pcarr)[4];
int* pint;
};
static conv bconv;
int main(){
bconv.pint = new int(100);
cout << *((int*)bconv.pcarr) << "\n"; //int to char (*)[4]
bconv.pcarr = (char(*)[4])new char[4]{1,2,3,4};
cout << *bconv.pint << "\n"; //char (*)[4] to int
}
union conv{
unsigned char (*pcarr)[4];
int* vint;
};
static conv bconv;
int main(){
bconv.vint = new int(100);
cout << *((int*)bconv.pcarr) << "\n"; //int to char (*)[4]
bconv.pcarr = (unsigned char(*)[4])new unsigned char[4]{255,255,255,127}; //big-endian
if(INT_MAX == *bconv.vint) cout << "bingo\n";
}