不对。
while(*s2++=*s1++);这里*的优先级比++高。
先是复制元素,即:*s2=*s1,之后增加地址,即:s2++;s1++,就是相当于: 比如有一个int i=0,j=0;s2[i++]=s1[j++];,与数组的对应关系是这样的。
你提到s1[0]++,那是内容变更,不是地址变更。
很遗憾,你的分析是有问题的,原因很简单,就只有一条
那就是++不是对*s1的操作,而是对s1的操作,地址自增,而不是值自增
这个可以参考++和*的算符优先级,就很容易找到答案了
不对,如果是s2[0]++的话,的确是s2[0]的值做运算,但是,*s2是一个指针,*s2++所出来的后果不是对它指向的值做运算,而是对它本身的值做运算,也就是指向它的下一个位置,所以书本上说的是没错的,这函数的确是把s1复制(赋值)到s2去。
要分清楚数组和指针之间的区别。
大哥 *s1++ ++和*的优先级一样 但其结合性是从右到左的 所以++先算,切莫把数组和指针混淆