次のプログラムがあります。
#include<stdio.h>
char * test()
{
char * rt="hello";
return rt;
}
void main()
{
printf("\n %s \n", test());
}
ここでは、hello が正しく出力されますが、rt が char rt[]="hello" のような定数ポインターでない場合は、ガベージが出力されます。私の理解では、後者のスタックでは、関数がテストから戻ったときに解放されますが、上記の場合はどうなりますか? char *rt のメモリはどこに割り当てられますか?
上記の部分を拡張すると、 char rt[]="hello" を実行しようとすると、 rt="hrer" を実行しようとするとエラーがスローされますが、 char *rt="hello" では問題なく動作しますが、特定の文字を変更することはできません大文字と小文字を区別する文字列。それを理解するのを手伝ってください。ありがとう。