この質問は、このSO回答の拡張だと思います。次のコードがあるとします。
#include <stdio.h>
#include <string.h>
void func(char *str)
{
strcpy(str, "Test");
}
int main()
{
char testStr[20] = "Original";
func(testStr);
printf("%s\n", testStr); /* Prints "Test" followed by a new-line */
return 0;
}
私の理解では、引数として読み取り専用リテラルfunc
へのポインタを期待するべきではありませんか?一方、渡されるのは、読み取り専用リテラルのスタック上のコピーです。
これで正しい結果が得られますが、これは100%正しいですか?代わりにfunc()
受け入れられた場合、コードの可読性が向上しますか?char []
char *