gpt4 book ai didi

c - strcat() 中指针的返回如何工作

转载 作者:行者123 更新时间:2023-11-30 16:03:41 27 4
gpt4 key购买 nike

嘿,大家好,我正在尝试弄清楚 strcat() 如何返回指针,因此我尝试实现自己的 strcat() 来看看它是如何工作的。以下是我的 mystrcat() 代码,其工作方式与真正的 strcat() 类似:

char *mystrcat(char *destination, char *source)
{
char *str = destination;

while (*str != '\0')
{
str++;
}

while (*source != '\0')
{
*str = *source;
str++;
source++;
}
*str = '\0';

return str;
}

所以让我们在我的 main() 中说,我有

char string[BUFSIZ];
mystrcat(string, "hello");
printf("%s\n", string);

输出将是

hello
正如预期的那样。我不明白的是,返回局部变量 str 的地址如何神奇地使变量 string 指向它,以及为什么变量 str 在函数终止时不会被删除。

最佳答案

您没有返回局部变量的地址。您将返回局部变量的。由于所讨论的变量是一个指针,因此它的值恰好是一个地址。 str 变量中包含的地址指向参数 destination 提供的内存块。

您似乎误解的是:

char* str = destination;

不创建destination字符串的副本。它创建一个名为 str 的指针,该指针指向 destination 所指向的同一内存位置。当您使用 str 操作该内存块中的字符时,destination 表示的字符串也会被修改,因为 strdestination 指向内存中完全相同的字符串。这就是它“神奇地更新”参数的方式。

关于c - strcat() 中指针的返回如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3833602/

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