使用C ++

时间:2018-06-25 16:41:35

标签: c++

我正在阅读一段执行此操作的代码

void *ptr_to_something = (void*)0x23; // I made this up, it's just a pointer to something
void *addr;
void *dst =  (void*)(addr = ptr_to_something); // This is the line that confuses me

似乎是将指向某事物的指针分配给同一事物的另一指针。没关系。.但是结果被括在括号中,强制转换为同一事物,并以某种方式重新分配给指向同一事物的第三个指针。

这真的是有效的C ++吗?是否可以保证分配分配结果会产生相同的分配对象?

2 个答案:

答案 0 :(得分:5)

在C ++中可以这样做:

int a, b, c;

a = b = c = 1;

因此,分配的结果就是该分配的值。

演员阵容的目的是一个谜*。您是否尝试过删除它,并且会生成警告吗?

*这不是一个谜,也许只是不必要的。

答案 1 :(得分:2)

这是有效的C ++。以这种方式格式化代码的选择很奇怪,不建议这样做,但这是完全合法的。

此代码等效于以下(我认为写得更好)代码:

void *ptr_to_something = (void*)0x23;
void *addr = ptr_to_something;
void *dst =  addr;