* t ++ = * s ++;字符串副本

时间:2016-07-20 23:35:45

标签: string pointers copy post-increment

这是一个备受争议的问题,但我怀疑的是 在C中,* t ++相当于*(t ++),因为++(后增量运算符)的优先级大于*。因此,在 while(* t ++ = * s ++); 从s复制到t时,不会跳过第一个字符; 为了更好地构建它,复制是在增量运算符之前还是之后进行,为什么?

1 个答案:

答案 0 :(得分:2)

不,第一个角色不会被跳过。评估t++(后递增)的结果是在增量发生之前t的值,因此指针取消引用将转到t递增之前指向的位置。您可以使用预增量运算符(++t)递增t并在增量后生成值。