首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++14和C++17使用:`*p++ = *p`的区别

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的操作可以正确执行。

总结:

  • 在C++14中,*p++ = *p的行为是未定义的,不应该使用。
  • 在C++17中,*p++ = *p的行为是定义良好的,可以正确执行。

请注意,以上答案仅适用于C++14和C++17中*p++ = *p的区别。如果您对其他C++相关问题有任何疑问,欢迎继续提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券