C++14和C++17中*p++ = *p
的区别如下:
在C++14中,*p++ = *p
的含义是将指针p
所指向的值赋给p
指向的下一个位置,并将p
指向下一个位置。这个表达式的行为是未定义的,因为它会导致指针p
在同一表达式中既被修改又被使用,这违反了C++语言的规则。
在C++17中,*p++ = *p
的含义是将指针p
所指向的值赋给p
指向的下一个位置,并将p
指向下一个位置。这个表达式的行为是定义良好的,因为C++17中引入了指针迭代器的临时对象,它会在表达式结束后才递增指针p
。这样,*p++ = *p
的操作可以正确执行。
总结:
*p++ = *p
的行为是未定义的,不应该使用。*p++ = *p
的行为是定义良好的,可以正确执行。请注意,以上答案仅适用于C++14和C++17中*p++ = *p
的区别。如果您对其他C++相关问题有任何疑问,欢迎继续提问。
领取专属 10元无门槛券
手把手带您无忧上云