C++ 知道一个地址,能用这个地址输出相应内容吗?
2个回答
展开全部
这个问题挺有意思 :)
地址就是地址,只是纯粹的一串数字而已。
如果你想输出相应的内容,那你就得知道两个东西:
a,你得知道这个内容保存时需要占据多少字节内存,换句话讲你得先知道需要去解释
多长字节的内存空间才能把保存其中的东西给输出来;
b,第二个需要知道的是如何去解释这段长度的内存,是按照无符号整数方式来解释呢,
还是按照单精度浮点数来解释。
在 c/c++ 中,能同时告诉你上面这两个东西的概念就是地址处所保存数据的数据类型。
所以,假如你手头只有一个 UL 类型的地址,而你要把这个地址处的四字节解释成无
符号整数,那你就得这么写: *(unsigned int *)0xABCDEF12 ; 否则若要解释成单精
度浮点数,那就得这样: *(float *)0xABCDEF12 。另外,有趣的是你还可以将 地址
0xABCDEF12 开始的一个字节(注意,不是四字节,而是一字节)解释成一个 unsigned
char,写法就是这样: *(unsigned char *)0xABCDEF12 。
所以,多长字节解释成什么类型,就能取出什么样的内容,一切只在于你自己。 :)
地址就是地址,只是纯粹的一串数字而已。
如果你想输出相应的内容,那你就得知道两个东西:
a,你得知道这个内容保存时需要占据多少字节内存,换句话讲你得先知道需要去解释
多长字节的内存空间才能把保存其中的东西给输出来;
b,第二个需要知道的是如何去解释这段长度的内存,是按照无符号整数方式来解释呢,
还是按照单精度浮点数来解释。
在 c/c++ 中,能同时告诉你上面这两个东西的概念就是地址处所保存数据的数据类型。
所以,假如你手头只有一个 UL 类型的地址,而你要把这个地址处的四字节解释成无
符号整数,那你就得这么写: *(unsigned int *)0xABCDEF12 ; 否则若要解释成单精
度浮点数,那就得这样: *(float *)0xABCDEF12 。另外,有趣的是你还可以将 地址
0xABCDEF12 开始的一个字节(注意,不是四字节,而是一字节)解释成一个 unsigned
char,写法就是这样: *(unsigned char *)0xABCDEF12 。
所以,多长字节解释成什么类型,就能取出什么样的内容,一切只在于你自己。 :)
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询