こんにちは、strcat() によってポインターがどのように返されるかを理解しようとしているので、独自の strcat() を実装して、それがどのように機能するかを確認してみました。以下は、実際の strcat() のように機能する mystrcat() の私のコードです。
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 のアドレスを返すと、魔法のように変数文字列がそれを指すようになる方法と、関数が終了したときに変数 str が削除されない理由です。