2015-05-26 165 views
0
string * sptemp = (string *) 0x000353E0; 

这段代码究竟想说什么?C++字符串和指针混淆

我知道在左侧我们定义了一个字符串指针,但我无法理解正确的部分。

+9

它非常尖叫未定义的行为。 –

+0

右侧是给定在左侧的对象的*值*。就像'int n = 10;'一样。 –

+0

与它相同:string * sptemp; sptemp = 0X000353E0 –

回答

4

这意味着取一个数字值,将其转换为一个指针,并将该值指向该地址,然后使用该值初始化变量sptemp

如果该地址的内存包含有效的string对象,则可以使用指针访问它。否则,试图这样做会导致未定义的行为。

4
string * sptemp = (string *) 0x000353E0; 

是什么代码究竟想说什么?

它说,把位于地址0x000353E0数据,就好像它拥有string和地址赋给变量sptemp。之后可以通过指针变量sptemp访问数据。

+2

它实际上并没有说访问,是吗?它只是说把它当作。 –

+0

@EvdzhanMustafa,通过赋值给变量'sptemp',你可以通过它访问该地址的值。 –

0

这些评论大多是正确的,但不完全。我们实际上并不知道这个字符串是std :: string。这可能是该字符串是一些内存映射硬件,其OP嵌入式SBC上的地址由硬件0x000353E0定义。在这种情况下,这是完全明智的,人们总是在做什么。指针“string * sptemp”被设置为指向硬件接口。

但这可能是无稽之谈。