gpt4 book ai didi

c - 这段 C 代码的作用是什么? [与函数体代码混淆]

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

void my_strcat(char *dest, char *src)
{
(*dest)? my_strcat(++dest, src): (*dest++ = *src++)? my_strcat(dest, src): 0 ;
}

/* driver function to test above function */
int main()
{
char dest[100] = "geeksfor";
char *src = "geeks";
my_strcat(dest, src);
printf(" %s ", dest);
getchar();
}

我非常了解 C 主题指针和三元运算符,但对上面的代码感到困惑这是什么尝试检查条件语句以及进一步在 true 和 false 依赖语句中发生的事情。

谁能详细解释一下这段代码到底在做什么?

最佳答案

它假定目标缓冲区 char dest[100] , 不仅以 null 结尾,而且充满了 \0一直到最后。

所以首先,*dest正在检查 dest 所在的字符是否指向,是一个空终止符, 0 .

如果它没有找到它,那么它递归地调用自己,但向右移动一个位置,最终找到空终止符。 (如果没有空终止符,那么这个函数是危险的,写入缓冲区。)

如果它确实找到了空终止符,那么它将一个字符从源复制到目标,然后调用自身并将两个指针都向右移动,继续复制。 (同样,这似乎是在没有适当检查边界的情况下完成的。)

关于c - 这段 C 代码的作用是什么? [与函数体代码混淆],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46870633/

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