C++ 指针类型的强制转换
指针的值以及指针指向地址的值对应为数据的地址和该地址内存储数据的值,故根据CPU的大小端类型,将指针转换类型后继续操作应注意大小端。
#include
#include
usingnamespace std;
int main()
{
char str1[4]={0x12,0x34,0x56,0x78};
char* ptr = str1;
cout <<"value of *ptr "<< hex <<(int)(*ptr)<< endl;//hex输出必须对应int类型,否则输出ASCII码
cout <<"value of *ptr "<< hex <<(int)(*(int*)ptr)<< endl;//hex输出必须对应int类型,否则输出ASCII码
return0;
}
编译输出:
E:\CppTest\VScodeTest\pointer_t> g++.\pointer_t.cpp -o pointer_t
E:\CppTest\VScodeTest\pointer_t>.\pointer_t.exe
value of *ptr 12
value of *ptr 78563412
E:\CppTest\VScodeTest\pointer_t>
可见并不是想要的 0x12345678。