我正在阅读一段执行此操作的代码
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 ++吗?是否可以保证分配分配结果会产生相同的分配对象?
答案 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;