reinterpret_cast学习

reinterpret_cast
c++里面的强制类型转换

用法:

reinterpret_cast<类型>(变量)

注意(以下内容,在不同编译器里跑可能不一样)

#include<iostream>

using namespace std;

int main()
{
	int intarray[5]={1,2,3,4,5};
		
	int *intptr=intarray;
	
	cout<<"cout:  "<<'\n';
	for(int i=0;i<5;i++)
	{
		cout<<*intptr<<" at "<<reinterpret_cast<unsigned long>(intptr) <<'\n';
		intptr++;
	}
	return 0;
 } 

网课的例子如上,有删改!但是重点都不变
但是我在devc++跑就报错,如下

[Error] cast from 'int*' to 'long unsigned int' loses precision [-fpermissive]

估计可能原因是字节数不一样,无法强制转换
int* 可能为8个字节,而转换后为4个,所以会丢失精度

故改为以下试一试

reinterpret_cast<unsigned long long>(intptr)

成功!!!

输出:
cout:
1 at 7339504
2 at 7339508
3 at 7339512
4 at 7339516
5 at 7339520

发布了29 篇原创文章 · 获赞 0 · 访问量 485

猜你喜欢

转载自blog.csdn.net/qq_43771959/article/details/104480453