c++指针变量可以强制转换类型吗?

来源:百度知道 编辑:UC知道 时间:2024/07/14 04:27:46
在c++中
如果我定义一个变量为unsigned char *p = new char[8];
然后*(unsigned long* )p = 0x61626364;
这样可以吗?
但是原先这个指针指向的是存储char的内存地址,现在让他指向整型,那这个p地址变量了没有呢?
希望有高手帮我理解一下,谢谢

unsigned char *p = new char[8];
*(unsigned long* )p = 0x61626364;

这样编译是可以通过的

这样 是 通过p把 0x61626364
这个值赋给了 p指向的 char[8]
p 的指向没有改变

1, 指针p的值并没有改变,
2, 强制把p转成ulong指针后,对其所指的内存赋值相当于对一个ulong赋值(假设运行平台为x86,不存在date align),
3, *(unsigned long* )p = 0x61626364;赋值以后,假设平台为little endian模式,那么
char[0] = 0x64
char[1] = 0x63
char[2] = 0x62
char[3] = 0x61