Привет, ребята, я пытаюсь понять, как указатели возвращаются 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 не удаляется при завершении функции.