gpt4 book ai didi

使用带后增量的指针复制字符

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:46 25 4
gpt4 key购买 nike

最近一直在学习C和指针。

在 Stephen G. Kochan 的《Programming in C》一书中,我遇到了一个我很难完全理解的例子。

使用指针将字符串from复制到字符串to,示例说明:


void copyString (char *to, char *from) {
while ( *from )
*to++ = *from++;

*to = '\0';
}

在我的理解中,*from++*from的后增量;因此 *to++ 的值应该只是 *from

例如,如果

`*from` is in the position 1.

`*from++` is in position 2

`*to++` in position 2,

但是:*from++ = *to++ 应该将 *from 的值返回为 *to 位置 1,而不是位置 2。

编译器说是位置2,书上也说是位置2。

我在这里有点困惑。你对这个案例有什么可行的解释吗?

最佳答案

当使用后缀++ 一元运算符时,增量在计算操作数的值之后排序。所以表达式等同于:

*to = *from;
to++ ;
from++ ;

在你的例子中:*to++ = *from++;,得到*to*from的值,然后得到*from 被分配给 *to,然后两个指针都递增。

关于使用带后增量的指针复制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27460119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com