这行在做什么?是地址增加还是地址和值都被更新[duplicate]

x759pob2  于 2022-12-26  发布在  其他
关注(0)|答案(1)|浏览(78)
    • 此问题在此处已有答案**:

(17个答案)
3天前关闭.

char *_strcat(char *dest, char *src)
{
    char *temp = dest;

    while (*dest)
        dest++;

    while (*src)
        *dest++ = *src++; ====> this line

    *dest = '\0';
    return (temp);
}

我不理解上面指定的代码行;它是同时更新dest的值和地址,还是只更新值。还有这里的主要逻辑是什么。我迷路了!

9bfwbjaz

9bfwbjaz1#

++运算符的优先级高于*运算符,但由于++(在表达式中)使用操作数的旧值,因此部分:

*dest++ = *src++;

首先解引用src指针,初始化dest指向的内存地址,然后将两个指针都递增1以指向下一个字符。
在循环中,它将src的内存内容复制到dest
这和做是一样的

*dest = *str;
dest++;
str++;

或者

*dest = *src;
dest += 1;
src += 1;

相关问题