指针变量,存放的是内存地址,指针的类型代表的是它所指向的变量的类型。
旧指针到新指针的强制类型转换是指将指针所指的内容的类型由原来的类型转换为新的类型。假定新类型为T
,对于指针p
,将其转换为新类型的语法为(T *)p
。至此,p
指针所指向的变量地址就会按新类型T
来进行解释。
具体例子如下:
char arr[30];
int nums[] = {1,2,3,4};
for (int i = 0; i < sizeof(nums) / sizeof(int); ++i)
{
// 将char类型指针转换为int类型指针
*(int*)&arr[i * sizeof(int)] = nums[i];
}
for (int i = 0; i < sizeof(nums) / sizeof(int); ++i)
{
// 将char类型指针转换为int类型指针,并按int类型指针的方式来解释
// 即从当前地址开始,取4个字节,再将其转换为int类型
cout << *(int*)&arr[i * sizeof(int)] << " ";
}
cout << endl;
// 1 2 3 4
注:这种转换方式在网络传输中比较常用。