2015-08-14 68 views
-1

这到底是什么?试图了解这个变量定义

int test = *(int*)(0x154512); 
+0

0x154512整数值是将存储到暂时指针为int类型那么它的值将解除引用并复制到测试变量的存储器地址 –

+0

所以这读取在存储器0x154512?还是它读取0x154512指向的地方? – Jayden

+0

@IInspectable:好吧,它也是一个声明,就像每个定义一样:-) –

回答

7
0x154512 

是整数,写在基部16

(int*)(0x154512) 

说来治疗号码作为int变量的地址。

*(int*)(0x154512) 

说取消引用该地址,或者获取该地址的int值。

int test = *(int*)(0x154512) 

说来声明int变量test并将其分配位于地址0x154512的int值。

2

让我们把它分解成几块。

0x154512是一个十六进制值,或base-16,为方便起见,它经常用于存储器地址。

int*声明一个指向int类型的值的指针。因此,(int*)(0x154512)意味着0x154512被视为内存地址,我们希望它保存一个整数。

左边的最后*引用操作,这意味着“让位于这个指针值”更多或更少。

因此,它将内存地址0x154512处的整数复制到变量“test”。

欲了解更多有关指针: http://www.cplusplus.com/doc/tutorial/pointers/

如果你计划在将来做了很多C++,确保给这个一个不错的,长的读取。指针很有趣。

0

一行获取存储在0x154512存储器位置