你可以拿一幅麻将或者扑克来模拟这个过程。
比如你手上的牌上 1 2 3 4 5,你现在要把它逆序。
第一步,你把1放到最右边,变成 2 3 4 5 1
第二步,你把2放到5和1中间,变成 3 4 5 2 1。
注意如果你假装看不见1,你相当于是对 2 3 4 5这个牌,执行把第一张牌放在最后面的操作。
同理,第三步,是把 3 4 5 中的 3放到末尾,变成 4 5 3,再加上后面的 2 1 变成 4 5 3 2 1。
最后再执行一步,就变成 5 4 3 2 1了。
你的代码和上面的过程是一样的。
当牌为 1 2 3 4 5 时&sPtr[ 1 ] 代表的是 2 3 4 5,
所以
reverse( &sPtr[ 1 ] );
putchar( sPtr[ 0 ] );
就是 把1放到 2 3 4 5 后面,然后,再对2 3 4 5 执行下一步操作。
对于 2 3 4 5来说 &sPtr[ 1 ] 代表的是 3 4 5 把2 放到它的后面,再继续操作。